PIVOT Funktion anhand Beispiel Sage Office Line - Kontenumsatz
Bei Umsatzauswertungen möchte man gerne Werte aus mehreren Zeitbereichen nebeneinander aufgeführt haben, um Vergleichen und Tendenzen erkennen zu können. Gut geeignet dazu ist eine Pivot-Tabelle wie man sie aus MS Excel kennt, auch Access unterstützt die Funktion bereits seit Jahren. Möchte man das gleiche mit einer Reporting Engine erhalten, die kein Pivot unterstützt, musste man in T-SQL leichte Verrenkungen mittels CASE Anweisungen machen.
MS SQL Server ab 2005 kennt die Pivot-Funktion nun auch. Hier mal ein kleines Beispiel anhand der Kontenumsätze aus einer Sage Office Line Demo-Datenbank „OLDemoReweAbfD“
SELECT Kto, [2008], [2007], [2006], [2005]
FROM (SELECT Kto, Jahr,
SUM(SaldoVortragEw + SollEw - HabenEw) AS SaldoEw FROM KHKKontenUmsatz
WHERE Mandant = 88 --Mustermann & Söhne AND Planung = 0 --Nur Ist-Zahlen AND KtoTyp = 3 --Sachkonten GROUP BY Kto, Jahr
) AS UMS PIVOT (SUM(SaldoEw)
FOR Jahr IN ([2008], [2007], [2006], [2005]) ) AS PVT
ORDER BY Kto
| Kto | 2008 | 2007 | 2006 | 2005 |
| S00010 | 2,00 | 2,00 | 2,00 | 909,00 |
| S02000 | 450,00 | 895,00 | 1340,00 | 1785,00 |
| S03200 | 0,00 | 0,00 | 1,00 | 1,00 |
| S03500 | 0,00 | 0,00 | NULL | NULL |
| S04000 | 1,00 | 530,00 | 1062,00 | NULL |
| S04850 | 496,00 | NULL | NULL | NULL |
| S05350 | 400000,00 | 500000,00 | 500000,00 | 500000,00 |
| S08000 | -500000,00 | -500000,00 | NULL | NULL |
| S08600 | -1715459,83 | -1628698,01 | NULL | NULL |
| S10000 | NULL | NULL | NULL | NULL |
| Usw… |
|
|
|
|