Ich habe einige Probleme mit einer Pivot-Abfrage (SQL Server). Die Aufgabe ist ganz einfach: für eine Person, die ich es sammeln müssen, um das Einkommen Statistiken für jeden Monat in einem Jahr, aber jedes neue Monat Einkommen auf dem previuos income
basiert plus der current month income
SQL-Pivot-Abfrage mit komplexer Aggregation
Nur zum Beispiel. Lassen Sie eine Person ein 3k Gehalt pro Monat (der Einfachheit halber ist es eine Konstante), dann sollte ein Abfrageergebnis so etwas wie dieses:
Year | Jan | Feb | ... | Dec
2016 | 3k | 6k | ... | 36k
2015 | 3k | 6k | ... | 36k
...
Eine Pseudo SQL-Abfrage ist:
select * from (
select
year(date) as year,
month(date) as month
salary,
from income
where personId = 'some id'
) as tmp
pivot (
sum(salary),
for month in ([1], [1..2], [1..3], ...)
) as pvt
Das Problem ist, es gibt Nein [1..2] Ausdruck in SQL. Wie kann eine solche Abfrage mit einem Standard-SQL durchgeführt werden?
einig Direkt an der Spitze von meinem Kopf Hinweis: innere Abfrage zu partitionieren und die Summe mit einem geeigneten Fenster (? Zwischen den Zeilen unbegrenzt vorhergehende und aktuelle) mit einem Label für Ihre Periode 1to2, 1to3, 1to4 usw Dann drehen Sie auf Ihren Etiketten. Wenn ich heute Abend Zeit habe, schaue ich mir eine vollständige Lösung an. –