SQL循环和递增

时间:2011-05-27 21:04:06

标签: sql-server sql-server-2008 loops

我正在使用SQL Server 2008

我有以下SQL获取今天和2012年12月31日之间的所有日期。我现在要做的是从值10000开始并同等地增加此值,因此在12月31日我的值为150000。

Declare @projection table(d datetime, t decimal)
Declare @d datetime
Declare @t decimal(18, 2)

set @d='20110527'
set @t=100000

While @d<='20121231'
Begin
Insert into @projection values (@d, @t)
set @d=@d+1
End
Select d as DateCol, t as TotalRevenue from @projection

任何帮助非常感谢

1 个答案:

答案 0 :(得分:2)

t从10000到150000线性插值。

Declare @projection table(d datetime, t decimal)
Declare @d datetime, @d1 datetime, @d2 datetime
Declare @t decimal(18,4), @t1 decimal(18, 4), @t2 decimal(18,4), @tincr decimal(18,4)

set @d1='20110527'
set @d2='20121231'
set @t1=10000
set @t2=150000

Set @tincr = (@t2-@t1)/DATEDIFF(D, @d1, @d2)

Set @d = @d1
set @t = @t1

While @d<=@d2
Begin
Insert into @projection values (@d, @t)
set @d=@d+1
Set @t=@t+@tincr
End
Select d as DateCol, t as TotalRevenue from @projection

请注意,我将小数精度调高为4,使舍入误差无关紧要。