相关疑难解决方法(0)

将行数据转换为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')
Run Code Online (Sandbox Code Playgroud)

我使用PIVOT将行数据显示为列:

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

输出是:

ENTITYID    NAME    SPOUSE  CHILD
1           DONNA   HENRY   JACK
2           NULL    NULL    KAYALA
Run Code Online (Sandbox Code Playgroud)

但他希望输出类似于:

ENTITYID    NAME    SPOUSE …
Run Code Online (Sandbox Code Playgroud)

sql sql-server pivot unpivot sql-server-2008

2
推荐指数
1
解决办法
5万
查看次数

标签 统计

pivot ×1

sql ×1

sql-server ×1

sql-server-2008 ×1

unpivot ×1