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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage