Konwertuj dane wiersza na kolumnę w SQL Server

Dzisiaj mój kolega poprosił mnie o przekształcenie danych z pionowej tabeli pomostowej w tabelę poziomą. Mam na myśli przekształcenie wierszy w kolumnę. Użyłem PIVOT i rozwiązałem go. Ale zająłem się sytuacją, w której mam problem z przenoszeniem danych, jeśli pole danych się powtarza.

Oto dane testowe, nad którymi pracuję:

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')

Użyłem PIVOT, aby wyświetlić dane wiersza jako kolumny:

SELECT * FROM 
(SELECT ENTITYID, PROPERTYNAME, PROPERTYVALUE FROM STAGING) AS T
PIVOT (MAX(PROPERTYVALUE) FOR PROPERTYNAME IN (NAME, SPOUSE, CHILD)) AS T2

Dane wyjściowe to:

ENTITYID    NAME    SPOUSE  CHILD
1           DONNA   HENRY   JACK
2           NULL    NULL    KAYALA

Ale chciał, żeby wynik był taki:

ENTITYID    NAME    SPOUSE  CHILD   CHILD
1           DONNA   HENRY   JACK    KAYALA

Najważniejsze jest to, że w tabeli pomostowej może znajdować się więcej niż jeden atrybut CHILD. I musimy to rozważyć i przenieść wszystkie DZIECI do kolumn.

czy to możliwe?

questionAnswers(2)

yourAnswerToTheQuestion