我已经研究过枢轴,但我认为它需要一个我不需要的聚合函数(我认为)。
我的查询结果是
Name Property Name PropertyValue
---------- ---------- ----------
lorem Work Phone 000.111.2020
ipsum Email test@email.com
要
Name Work Phone Email
---------- ---------- ----------
lorem 000.111.2020 test2@email.com
ipsum 001.101.2010 test3@email.com
我认为我不应该在这里使用pivot,因为我不需要聚合任何东西,我只想让行数据成为一列。
答案 0 :(得分:3)
使用:
SELECT t.name,
MAX(CASE WHEN t.property = 'Work Phone' THEN t.value ELSE NULL END),
MAX(CASE WHEN t.property = 'Email' THEN t.value ELSE NULL END)
FROM TABLE t
GROUP BY t.name
您必须使用聚合函数,否则您将拥有多个具有NULL的行。
答案 1 :(得分:2)
PIVOT需要汇总,是的,如果您的数据是:
,则需要汇总Name Property Name PropertyValue
---------- ---------- ----------
lorem Work Phone 000.111.2020
lorem Work Phone 999.999.9999
ipsum Email test@email.com
鉴于你知道你的数据是唯一的,你可以在你的数据透视中使用MIN或MAX。
注意:您的示例输出与您的exmaple输入不匹配。
http://cloudexchange.cloudapp.net/stackoverflow/q/2589
-- SO2993412
DECLARE @t AS TABLE (Name varchar(25), [Property Name] varchar(25), PropertyValue varchar(25))
INSERT INTO @t VALUES ('lorem', 'Work Phone', '000.111.2020')
,('ipsum', 'Email', 'test@email.com')
SELECT Name, [Work Phone], [Email]
FROM @t
PIVOT (MAX(PropertyValue) FOR [Property Name] IN ([Work Phone], [Email])) AS pvt