Heim >Datenbank >MySQL-Tutorial >Wie transponiere ich dynamische SQL Server-Spalten mithilfe von UNPIVOT in Zeilen?

Wie transponiere ich dynamische SQL Server-Spalten mithilfe von UNPIVOT in Zeilen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-05 04:39:11394Durchsuche

How to Transpose Dynamic SQL Server Columns to Rows Using UNPIVOT?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn