Ich versuche herauszufinden, wie Sie eine Zeile für jeden Monat zwischen einem Zeitraum auswählen. Der Zeitraum beginnt mit dem frühesten Monat innerhalb der Tabelle. Im folgenden Beispiel wird die Startperiode 2016-01-01 sein, aber die Endperiode wird benutzerdefiniert sein, sagen wir 2017-02-01. Meine Tabelle:SELECT Zeile für jeden Monat zwischen Daten
rowID | Month | someDate | SomeOtherDate | Number
1 | 2016-01-01 | 2018-01-01 | 2018-01-01 | 0
2 | 2016-07-01 | 2019-03-01 | 2019-02-01 | 1
Das Ergebnis ich suche, ist dies:
Month | someDate | SomeOtherDate | Number
2016-01-01 | 2018-01-01 | 2018-01-01 | 0
2016-02-01 | 2018-01-01 | 2018-01-01 | 0
2016-03-01 | 2018-01-01 | 2018-01-01 | 0
2016-04-01 | 2018-01-01 | 2018-01-01 | 0
2016-05-01 | 2018-01-01 | 2018-01-01 | 0
2016-05-01 | 2018-01-01 | 2018-01-01 | 0
2016-07-01 | 2019-03-01 | 2019-02-01 | 1
2016-08-01 | 2019-03-01 | 2019-02-01 | 1
2016-09-01 | 2019-03-01 | 2019-02-01 | 1
2016-10-01 | 2019-03-01 | 2019-02-01 | 1
2016-11-01 | 2019-03-01 | 2019-02-01 | 1
2016-12-01 | 2019-03-01 | 2019-02-01 | 1
2017-01-01 | 2019-03-01 | 2019-02-01 | 1
2017-02-01 | 2019-03-01 | 2019-02-01 | 1
Im Grunde muss ich die Zeile duplizieren, bis es eine andere Zeile findet oder trifft das Enddatum der Periode, wenn eine andere Reihe ist gefunden, dann diese Zeile duplizieren, bis die Endperiode erreicht ist, während die Monat für jede Zeile inkrementiert wird. Hoffnung, die Sinn macht.
Jede Hilfe würde sehr geschätzt werden.
Sie benötigen einen anderen Kalender-Tabelle, mit allen Terminen gefüllt. Sie können es vor Ihrer Abfrage oder "on the fly" mit einigen CTEs füllen. Zum Beispiel http://stackoverflow.com/questions/5635594/how-to-create-a-calander-table-for-100-year-in-sql – xdd