Ich habe eine Anforderung, die fehlenden Zeitlücken in den Daten auszufüllen und die Spalte Cnt für Lücken mit 0 zu füllen. Muss ich dafür eine Kalendertabelle verwenden?F: TSQL - Füge fehlende Jahrs- und Monatslücken in Daten hinzu?
Die Ergebnisse meiner Abfrage sind bereits aggregiert, ich muss nur die Lücken hinzufügen.
select name
,YR
,MO
,[Cnt]
from dbo.OON
Stromausgang:
Name | YR | MO | Cnt
Kelly | 2014 | 1 | 197
Kelly | 2014 | 3 | 200
Kelly | 2014 | 5 | 300
Kelly | 2015 | 2 | 100
Kelly | 2015 | 3 | 50
Kelly | 2015 | 6 | 70
gewünschte Ausgabe:
Name | YR | MO | Cnt
Kelly | 2014 | 1 | 197
Kelly | 2014 | 2 | 0
Kelly | 2014 | 3 | 200
Kelly | 2014 | 4 | 0
Kelly | 2014 | 5 | 300
Kelly | 2014 | 6 | 0
Kelly | 2014 | 7 | 0
Kelly | 2014 | 8 | 0
Kelly | 2014 | 9 | 0
Kelly | 2014 | 10 | 0
Kelly | 2014 | 11 | 0
Kelly | 2014 | 12 | 0
Kelly | 2015 | 1 | 0
Kelly | 2015 | 2 | 100
Kelly | 2015 | 3 | 50
Kelly | 2015 | 4 | 0
Kelly | 2015 | 5 | 0
Kelly | 2015 | 6 | 70
Kelly | 2015 | 7 | 0
Kelly | 2015 | 8 | 0
Kelly | 2015 | 9 | 0
Kelly | 2015 | 10 | 0
Kelly | 2015 | 11 | 0
Kelly | 2015 | 12 | 0
Ja, normalerweise mache ich das mit einer Kalender Tabelle. Sie können einen rekursiv zur Abfragezeit generieren, die beste Option besteht jedoch darin, einen dauerhaften Wert zu erstellen und in Ihrem Data Warehouse zu speichern. Wenn Sie dies visualisieren möchten, wäre Power BI eine gute Option. Sie können den Kalender in DAX mit 'CALENDARAUTO()' erstellen. – smj
Hier ist ein guter Artikel: https://www.mssqltips.com/sqlservertip/4054/creating-a-date-dimension-dimension-calendar-table-in-sql-server/ – smj