PIVOT Funktion in MS SQL nutzen, ich bekomme es nicht hin
Ingo
- sql
- tabelle
Hallo,
ich habe folgende Tabellenstruktur:
IP | SN | gelb 0 | rot 0 | gelb 1 | rot 1
_____________________________________________
1 12345 50 50 40 0
Die Tabelle soll aber wie folgt angezeigt werden
SN | 12345
_______________
gelb 0 | 50
rot 0 | 50
gelb 1 | 40
rot 1 | 0
die Pivot funktion kapier ich nicht. Ich bekomme es einfach nicht hin.
Wer kann mir helfen?
Danke
Hallo Ingo,
was Du da willst, ist ja auch kein PIVOT, sondern das Gegenteil: auf Spalten verteilte Attribute zeilenweise auflisten. Dazu gibt's die UNPIVOT Klausel im SELECT.
Guck mal hier: https://docs.microsoft.com/en-us/sql/t-sql/queries/from-using-pivot-and-unpivot - das Beispiel für UNPIVOT ist ganz am Ende.
In deinem Fall müsste es in etwa so aussehen:
SELECT Feld, Wert
FROM
(SELECT Sn, gelb0, rot0, gelb1, rot1 FROM mytable WHERE IP=1) t
UNPIVOT
(Wert FOR Feld IN (Sn, gelb0,rot0, gelb1,rot1)) as unpvt
Hinweise:
Wenn's nicht klappt, viel Glück mit dem Link. Mehr als dort steht weiß ich auch nicht.
Die IP kannst Du auch in die Query durchreichen:
SELECT IP, Feld, Wert
FROM
(SELECT IP, Sn, gelb0, rot0, gelb1, rot1 FROM mytable WHERE IP=1) t
UNPIVOT
(Wert FOR Feld IN (Sn, gelb0,rot0, gelb1,rot1)) as unpvt
Rolf
Hallo Rolf,
Danke. Nein die Spaltennamen haben kein Leerzeichen, sorry.
Was meinst Du mit "Feld"
Hallo Ingo,
äh, was meinst Du mit der Frage? „Feld“ ist die Übersetzung des englischen Begriffs „field“; ich hätte vielleicht besser „Spalte“ geschrieben...
Rolf