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?