Konvertieren Sie Zeilendaten in eine Spalte in SQL Server
Heute wurde ich von meinem Kollegen gebeten, Daten von einer vertikalen Staging-Tabelle in eine horizontale Tabelle umzuwandeln. Ich meine, Zeilen in Spalten umwandeln. Ich habe PIVOT verwendet und es behoben. Aber ich gerate in eine Situation, in der ich Probleme habe, Daten zu verschieben, wenn sich das Datenfeld wiederholt.
Hier sind die Testdaten, an denen ich arbeite:
CREATE TABLE STAGING
(
ENTITYID INT,
PROPERTYNAME VARCHAR(25),
PROPERTYVALUE VARCHAR(25)
)
INSERT INTO STAGING VALUES (1, 'NAME', 'DONNA')
INSERT INTO STAGING VALUES (1, 'SPOUSE', 'HENRY')
INSERT INTO STAGING VALUES (1, 'CHILD', 'JACK')
INSERT INTO STAGING VALUES (2, 'CHILD', 'KAYALA')
Ich habe PIVOT verwendet, um Zeilendaten als Spalten anzuzeigen:
SELECT * FROM
(SELECT ENTITYID, PROPERTYNAME, PROPERTYVALUE FROM STAGING) AS T
PIVOT (MAX(PROPERTYVALUE) FOR PROPERTYNAME IN (NAME, SPOUSE, CHILD)) AS T2
Die Ausgabe ist:
ENTITYID NAME SPOUSE CHILD
1 DONNA HENRY JACK
2 NULL NULL KAYALA
Aber er wollte die Ausgabe so etwas wie:
ENTITYID NAME SPOUSE CHILD CHILD
1 DONNA HENRY JACK KAYALA
Unterm Strich können mehrere CHILD-Attribute in die Staging-Tabelle aufgenommen werden. Und wir müssen dies berücksichtigen und alle KINDER in Spalten verschieben.
Ist das möglich?