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_2507192059031494830 AS PeriodSales,
CAST (@pMAIN_2507192059031494831 AS FLOAT) AS Sales
UNION ALL
SELECT PeriodSales + @pMAIN_2507192059031494832 AS PeriodSales,
@pMAIN_2507192059031494833 * EXP(@pMAIN_2507192059031494834 * (PeriodSales + @pMAIN_2507192059031494835)) AS Sales
FROM Periods
WHERE PeriodSales < @pMAIN_2507192059031494836)
SELECT PeriodSales AS PeriodSales,
ROUND(Sales, @pMAIN_2507192059031494837, @pMAIN_2507192059031494838) AS ProjectedSales
FROM Periods
ORDER BY PeriodSales ASC;