0

次のような #info という名前のテーブルがあります。

name        start        delta
 n1         200.0         43.0
 n2        6000.0         87.0
 n3         739.0        129.0

create table #info (name sysname, startV float, changeV float);

しかし、#info テーブルから値を取得し、上記のテーブルの各名前の将来の値を計算するテーブルを作成する必要があります。したがって、開始値と金額変更またはデルタ金額があります。したがって、将来の日付と将来の金額の両方を計算するテーブルを生成する必要があります。日付は 2 週間ずつ増加し、1 年先まで進みます。2013 年 1 月 4 日、STARTV 値から開始し、変更値によって開始値を増やします。したがって、基本的に、出力は次のようになります。

    date        name        amount
01/04/2013      n1           200
01/18/2013      n1           243
02/01/2013      n1           286
 .......        ...          ....
01/04/2014      n1           673
01/04/2013      n2           6000       
01/18/2013      n2           6087
02/01/2013      n2           6174
 .......        ...          ....
01/04/2014      n2           6957
01/04/2013      n3           739   
 .......        ...          ....

これは私がこれまでに思いついたSQLコードです。n1値に対してのみ実行し、n2またはn3の値をリストしていません...何を変更する必要がありますか?

DECLARE @dd DATE
SET @dd = '01/04/2013';
SELECT TOP 24 DATEADD(week, 2*rn, @dd) ,*
    FROM (SELECT rn=(ROW_NUMBER() OVER (ORDER BY name)) -1
       FROM sys.columns ) c cross apply  
 (select d.dbname , d.startV+((rn+1)*d.changeV) as mm from #info d)  a
4

1 に答える 1