SQL Server entpackt mehrere Spalten

8

Ich versuche, eine Tabelle um viele Spalten zu schwenken, um zu drei Spalten zu gelangen (Pivot, Spaltenname, Wert)

also zum Beispiel:

%Vor%

würde werden:

%Vor%

Ich habe ziemlich viel gegoogelt, aber ich habe keine ähnliche Situation gefunden - vor allem, da der Drehpunkt anscheinend in die entgegengesetzte Richtung verläuft, was ich versuche zu erreichen.

    
mathematician 18.07.2014, 15:11
quelle

1 Antwort

14

Die Umwandlung von Spalten in Zeilen wird als UNPIVOT bezeichnet. Sie haben nicht angegeben, welche Version von SQL Server Sie verwenden, aber es gibt verschiedene Möglichkeiten, das Ergebnis zu erhalten.

Sie können SELECT mit UNION ALL verwenden:

%Vor%

Wenn Sie SQL Server 2005+ verwenden, können Sie die UNPIVOT-Funktion verwenden:

%Vor%

Schließlich können Sie statt der UNPIVOT-Funktion auch CROSS APPLY entweder mit VALUES (2008+) oder UNION ALL :

verwenden %Vor%

Jede dieser Versionen gibt Ihnen das gewünschte Ergebnis. Sie werden feststellen, dass ich die age -Spalte in varchar umwandeln musste. Dies liegt daran, dass der Datentyp / die Länge (in Univivot) der Spalten identisch sein muss, da Sie sie im Endergebnis in eine einzelne Spalte umwandeln werden.

    
Taryn 18.07.2014 15:20
quelle

Tags und Links