WITH Periods AS (
SELECT 0 AS PeriodSales, CAST(1000 AS FLOAT) AS Sales -- Initial sales value
UNION ALL
SELECT PeriodSales + 1, 1000 * EXP(0.05 * (PeriodSales + 1)) -- 5% growth rate per period
FROM Periods
WHERE PeriodSales < 10 -- Number of periods (e.g., years)
)
-- 2. Select the results
SELECT
PeriodSales,
ROUND(Sales, 2) AS ProjectedSales
FROM Periods
ORDER BY PeriodSales;
var (sql1, parameters1) = new SqlQueryBuilder()
.WithCTETable(new Table("Periods"), new SqlQueryBuilder()
.Select()
.Column(0, "PeriodSales")
.Column(new CAST(1000, SqlDataType.FLOAT), "Sales")
.UnionAll(new SqlQueryBuilder().Select()
.Column(new ColumnArithmatic("PeriodSales").ADD(1), "PeriodSales")
.Column(new ColumnArithmatic(1000).MULTIPLY(new EXP(new ColumnArithmatic(0.05).MULTIPLY(new ColumnArithmatic("PeriodSales").ADD(1)))), "Sales")
.From("Periods")
.Where(new Where(new Column("PeriodSales").LessThan(10)))
)
)
.Select().Column("PeriodSales", "PeriodSales")
.Column(new ROUND(new Column("Sales"), 2), "ProjectedSales")
.From("Periods")
.OrderBy(new OrderBy().SetColumnAscending("PeriodSales"))
.Build();
WITH Periods
AS (SELECT @pMAIN_2512060922259886580 AS PeriodSales,
CAST (@pMAIN_2512060922259886581 AS FLOAT) AS Sales
UNION ALL
SELECT PeriodSales + @pMAIN_2512060922259886582 AS PeriodSales,
@pMAIN_2512060922259886583 * EXP(@pMAIN_2512060922259886584 * (PeriodSales + @pMAIN_2512060922259886585)) AS Sales
FROM Periods
WHERE PeriodSales < @pMAIN_2512060922259886586)
SELECT PeriodSales AS PeriodSales,
ROUND(Sales, @pMAIN_2512060922259886587, @pMAIN_2512060922259886588) AS ProjectedSales
FROM Periods
ORDER BY PeriodSales ASC;