Converter dados de linha para coluna no SQL Server

Hoje meu colega me pediu para transformar dados de uma tabela de teste vertical em uma tabela horizontal. Quero dizer, transformar linhas em colunas. Eu usei o PIVOT e resolvi isso. Mas entrei em uma situação em que estou tendo problemas para mover dados se o campo de dados se repetir.

Aqui estão os dados de teste em que estou trabalhando:

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

Eu usei o PIVOT para mostrar os dados da linha como colunas:

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

A saída é:

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

Mas ele queria a saída algo como:

ENTITYID    NAME    SPOUSE  CHILD   CHILD
1           DONNA   HENRY   JACK    KAYALA

A linha inferior é que pode haver mais de um atributo CHILD entrando na tabela de teste. E precisamos considerar isso e mover todas as CRIANÇAS para as colunas.

Isso é possível?

questionAnswers(2)

yourAnswerToTheQuestion