PIVOT Abfrage unter SQL 2005

02/09/2008 - 09:21 von Patrick Pohlmann | Report spam
Hallo Zusammen,

ich nutze den SQL Server 2005 und möchte folgende, aus meiner Sicht sehr
einfache, Aufgabe erfüllen.

Ich habe Daten die so aussehen:

VertragNr,RgMonat; RgJahr;Betrag
1;1;2008;100
1;2;2008;211
1;3;2008;123
1;12;2007;192
2;11;2007;193
2;12;2007;209
2;1;2008;110

usw.

und möchte das Ganze gerne so dargestellt haben

VertragNr; 2007/11;2007/12;2008/1;2008/2;2008/3
1;0;192;100;211;123
2;193;209;110;0;0

Alle Lösung die ich dafür sehe scheitern daran, dass ich die Werte für
TgMonat und RgJahr in der ersten Tabelle wohl kennen muss um die zweite
(Pivot) Tabelle erstellen zu können. Da aber jeden Monat ein neuer Monat
dazukommt und alte Monate nicht mehr betrachtet werden ist die Abfrage ja im
stetigen Wandel. Kann das sein? Dass muss doch einfacher gehen. Oder sehe
ich den Wald vor lauter Bàumen
nicht? Die Anforderung könnte man ja im Grunde mit Excel mit drei Mausklicks
lösen.

Vielen Dank für Eure Hilfe.

Viele Grüße

Patrick!
 

Lesen sie die antworten

#1 Elmar Boye
02/09/2008 - 11:27 | Warnen spam
Hallo Patrick,

Patrick Pohlmann schrieb:
ich nutze den SQL Server 2005 und möchte folgende, aus meiner Sicht sehr
einfache, Aufgabe erfüllen.

Ich habe Daten die so aussehen:

VertragNr,RgMonat; RgJahr;Betrag
1;1;2008;100
1;2;2008;211
1;3;2008;123
1;12;2007;192
2;11;2007;193
2;12;2007;209
2;1;2008;110

usw.

und möchte das Ganze gerne so dargestellt haben

VertragNr; 2007/11;2007/12;2008/1;2008/2;2008/3
1;0;192;100;211;123
2;193;209;110;0;0

Alle Lösung die ich dafür sehe scheitern daran, dass ich die Werte für
TgMonat und RgJahr in der ersten Tabelle wohl kennen muss um die zweite
(Pivot) Tabelle erstellen zu können. Da aber jeden Monat ein neuer Monat
dazukommt und alte Monate nicht mehr betrachtet werden ist die Abfrage
ja im stetigen Wandel. Kann das sein? Dass muss doch einfacher gehen.



Nein leider nicht, denn PIVOT ist beim SQL Server nicht dynamisch,
d. h. die Spalten müssen vorher bekannt sein.

Du mußt also auf etwas zurückgreifen wie Itzik Ben-Gan beschreibt in
<URL:http://www.sqlmag.com/Article/Artic...0.html>
"Dynamic Pivoting"

Gruß Elmar

Ähnliche fragen