私は、以下に示す表の結果クエリを持っている:TSQL - 欠落している日付を追加
select * from (select [iKey], [StartDate], [FirstFCDate] from (SELECT [iKey], min([Date]) as [FirstFCDate] from dbo.factFC group by [iKey]) as gp left outer join (select [StartDate], [Key] from dbo.iKeys) dw on gp.iKey = dw.[Key]) ft
Table1
iKey StartDate FirstFCDate
101 2017-01-13 2017-04-01
52 2016-11-11 2017-04-01
21 2017-02-23 2017-04-01
19 2014-01-21 2017-05-01
34 2016-08-18 2017-07-01
私がやろうとしています何が私のファクトテーブル(dbo.factProdと呼ばれる別のテーブル)に行を挿入でそのテーブルには、開始日とFirstFCDateの間のすべての日付の行があります。現在、私のファクトテーブルは次のようになります
:あなたが見ることができるように
factProd
ID iKey Date pAmount fcKey
1 101 2017-04-01 123 1
2 101 2017-04-01 456 2
3 101 2017-04-02 789 1
4 101 2017-04-02 103 2
5 101 2017-04-03 192 1
6 101 2017-04-03 112 2
、のiKey 101のために、factProdテーブル上の最初の日付が正しくFirstFCDate列に対応2017年4月1日(あります表1)。
iKey + fcKeyの各組み合わせの2017-01-13(StartDate列から)までの各日付の行をこのfactProdテーブルに追加します。
だから、最終的な結果は、(IDが自動生成されます)、次のようになります。
factProd
ID iKey Date pAmount fcKey
99 101 2017-01-13 0 1
100 101 2017-01-13 0 2
101 101 2017-01-14 0 1
102 101 2017-01-14 0 2
103 101 2017-01-15 0 1
104 101 2017-01-15 0 2
... ... ... ... ...
199 101 2017-03-31 0 1
200 101 2017-03-31 0 2
1 101 2017-04-01 123 1
2 101 2017-04-01 456 2
3 101 2017-04-02 789 1
4 101 2017-04-02 103 2
5 101 2017-04-03 192 1
6 101 2017-04-03 112 2