Heim >Datenbank >MySQL-Tutorial >Wie transponiere ich dynamische SQL Server-Spalten mithilfe von UNPIVOT in Zeilen?
Dynamische SQL Server-Spalten mit UNPIVOT in Zeilen transponieren
In SQL Server ermöglicht die UNPIVOT-Funktion das Transponieren von Spalten in Zeilen, eine häufig verwendete Technik wird als Unpivoting bezeichnet. Dies ist besonders nützlich, wenn Sie mit Daten arbeiten, die eine dynamische oder variable Anzahl von Spalten haben.
Beispielszenario
Betrachten Sie die folgende Tabelle1:
Table1 ----------------------------------------- Id abc brt ccc ddq eee fff gga hxx ----------------------------------------- 12345 0 1 0 5 0 2 0 0 21321 0 0 0 0 0 0 0 0 33333 2 0 0 0 0 0 0 0 41414 0 0 0 0 5 0 0 1 55001 0 0 0 0 0 0 0 2 60000 0 0 0 0 0 0 0 0 77777 9 0 3 0 0 0 0 0
Das Ziel besteht darin, Tabelle1 in die folgende Expected_Result_Table zu entpivotieren und dabei nur Werte größer als zu berücksichtigen 0:
Expected_Result_Table --------------------- Id Word Qty>0 --------------------- 12345 brt 1 12345 ddq 5 12345 fff 2 33333 abc 2 41414 eee 5 41414 hxx 1 55001 hxx 2 77777 abc 9 77777 ccc 3
Lösung mit UNPIVOT
Die UNPIVOT-Funktion nimmt eine Tabelle mit mehreren Spalten und wandelt sie in eine breitere Tabelle mit zwei zusätzlichen Spalten um: einen „Wert“. „Spalte, die die Daten aus den Spalten der Originaltabelle enthält, und eine Spalte „Name“, die die Quellspalte identifiziert.
SELECT Id, name AS Word, value AS Qty>0 FROM Table1 UNPIVOT (value FOR name IN (abc, brt, ccc, ddq, eee, fff, gga, hxx)) AS unpvt WHERE value > 0;
Diese Abfrage wird das erwartete Ergebnis generieren.
Das obige ist der detaillierte Inhalt vonWie transponiere ich dynamische SQL Server-Spalten mithilfe von UNPIVOT in Zeilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!