Ich versuche einen passenden Titel für meine Frage zu finden und bisher waren es 30 Minuten Versuche ... :) Bis jetzt habe ich das folgende BeispielSQL: Erstelle neue Gruppen von Datumsbereichen aus einer Reihe von Datumsbereichen
DateFrom DateTo Amount
2015/01/01 2015/08/31 1$
2015/01/01 2015/12/31 3$
2015/08/01 2015/12/31 7$
- Für die erste Linie, die wir bekommen, dass wir 0.125 $/Monat ($ 1/8 Monate)
- Für die zweite Linie, die wir bekommen, dass wir 0,25 $/Monat ($ 3/12 haben Monate)
- Für die 3d Linie bekommen wir, dass wir 1,4 $/Monat (7 $/5 Monate) haben
Angesichts der oben genannten möchten wir eine neue Gruppe von Datumsbereichen erstellen, um die Summen der Beträge zu haben. Etwas wie die Ergebnisse unten:
DateFrom DateTo Amount
2015/01/01 2015/07/31 (0.125$+0.25$)*7 =2.625$
2015/08/01 2015/08/31 (1.4$+0.125$+0.25$)*1 =1.775$
2015/09/01 2015/12/31 (1.4$+0.25$)*4 =6.6$
Die Summe der oben genannten ist 11 $ genau wie die ursprünglichen Daten. Das Ergebnis, das wir erzielen möchten, ist die Summe des Betrags pro eindeutiger Gruppe von Datumsbereichen.
Kann dies mit SQL erreicht werden?
dort Hallo! Danke für die Rückmeldung! CTE zu verwenden und die Bereiche in Monate zu brechen, ist ein netter Ansatz. Wir sollten jedoch die Bereiche berücksichtigen, die sich überschneiden, um die Beträge zu aggregieren. In Ihrem Fall, so weit ich das verstehe, zeigen die Ergebnisse zwei Gruppen: 2015/01/01 - 2015/07/31 und 2015/08/01 - 2015/12/31 während und zusätzliche Gruppe sollte dort sein, die die überlappende Bereiche für 2015/08/01 - 2015/08/31 :) Ich werde versuchen, es von hier aus mit Ihrem Ansatz zu einem Ergebnis zu erreichen :) Nochmals vielen Dank für die sofortige Antwort! –
Ich verstehe dich nicht. Mein Skript gibt drei Gruppen zurück. Genau wie in Ihrer Anfrage. –
Es tut mir leid, Slava! Es war mein Fehler, es läuft wie du gesagt hast! :) –