Преобразование данных строки в столбец в SQL Server
Сегодня мой коллега попросил меня преобразовать данные из вертикальной промежуточной таблицы в горизонтальную таблицу. Я имею в виду преобразовать строки в столбец. Я использовал PIVOT и решил это. Но попал в ситуацию, когда у меня возникают проблемы с перемещением данных, если поле данных повторяется.
Вот тестовые данные, над которыми я работаю:
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')
Я использовал PIVOT, чтобы показать данные строки в виде столбцов:
SELECT * FROM
(SELECT ENTITYID, PROPERTYNAME, PROPERTYVALUE FROM STAGING) AS T
PIVOT (MAX(PROPERTYVALUE) FOR PROPERTYNAME IN (NAME, SPOUSE, CHILD)) AS T2
Выход:
ENTITYID NAME SPOUSE CHILD
1 DONNA HENRY JACK
2 NULL NULL KAYALA
Но он хотел получить что-то вроде:
ENTITYID NAME SPOUSE CHILD CHILD
1 DONNA HENRY JACK KAYALA
Суть в том, что в промежуточную таблицу может входить более одного атрибута CHILD. И мы должны рассмотреть это и переместить всех детей в столбцы.
Это возможно?