Цикл SQL и увеличение - PullRequest
1 голос
/ 28 мая 2011

Я использую SQL Server 2008

У меня есть следующий SQL, получающий все даты между сегодняшним днем ​​и 31 декабря 2012 года. Теперь я должен начать со значения 10000 и увеличить его равным образом, поэтому 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 Ответ

2 голосов
/ 28 мая 2011

Это линейно интерполирует 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, чтобы ошибки округления были незначительными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...