Ich habe eine Abfrage, die in der Tabelle ergibt sich wie folgt dar:TSQL - Hinzufügen Daten fehlt
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
Was ich versuche zu tun, um eine Zeile in meine Faktentabelle ein (eine separate Tabelle namens dbo.factProd) so dass auf dieser Tabelle eine Zeile für jedes Datum zwischen dem Startdatum und dem FirstFCDate steht.
Derzeit sieht meine Faktentabelle wie folgt aus:
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
Wie Sie, für iKey 101, der erste Tag, an dem factProd Tabelle sehen kann, ist 2017.04.01 (die an der Säule FirstFCDate entspricht richtig in Tabelle1).
Was ich tun möchte, ist eine Zeile zu dieser factProd Tabelle für jedes Datum zwischen 2017-01-13 hinzufügen (aus der StartDate Spalte) für jede iKey + fcKey Kombination.
Also das Endergebnis sollte wie folgt aussehen (ID wird automatisch generiert):
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