Ich habe eine Datenbank von IDs mit Einkommen und Anfangs-/Enddatum wie unten, aber ich habe Probleme, das Einkommen pro ID pro Monat für den angegebenen Anfangs-/Enddatumsbereich zu brechen.Wie schreibe ich eine Abfrage, um die Monate zwischen zwei Daten anzuzeigen?
Eine Probe der Tabellendaten unter:
ID | INCOME | START_DATE | END_DATE
1 | 2000 | 02/01/2016 | 05/31/2016
1 | 1500 | 12/01/2015 | 01/31/2016
2 | 1000 | 01/01/2016 | 04/30/2016
Das Ergebnis sollte:
ID | INCOME | MONTH
1 | 2000 | 05/2016
1 | 2000 | 04/2016
1 | 2000 | 03/2016
1 | 2000 | 02/2016
1 | 1500 | 01/2016
1 | 1500 | 12/2015
2 | 1000 | 04/2016
2 | 1000 | 03/2016
2 | 1000 | 02/2016
2 | 1000 | 01/2016
Wie würde ich die Oracle-SQL so schreiben, dass ich im Stande bin, das obige Ergebnis effizienter zu produzieren (Angenommen, die Tabelle hat Tausende von eindeutigen IDs)?
Welche Version der Oracle-Datenbank? – mathguy
Version 3.2.20.09 –
? Aktuelle Oracle-Version ist 12, Sie sind sicherlich nicht auf Oracle 3? Um herauszufinden, Ihre Version, führen Sie 'Select * von v $ Version;' – mathguy