以下是表格数据的示例
ID attribute_name attribute_value
1 attr1 val1
1 attr2 val2
1 attr3 val3
2 attr1 val4
2 attr2 val5
2 attr3 val6
以下是我希望查询输出为
的内容ID attr1 attr2 attr3
1 val1 val2 val3
2 val4 val5 val6
我尝试过这样的事情:Merge multiple rows with same ID into one row,但我无法获得针对具体案例所需的结果。
我真的没有像以前那样分享好的SQL作为起点,因为我真的需要从头开始。我希望有人可以帮助我。
答案 0 :(得分:2)
PIVOT
绝对是您的答案。 https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx
Pivot根据另一个值获取并聚合一个值。
DECLARE @Temp TABLE(ID INT, attribute_name VARCHAR(25), attribute_value VARCHAR(25))
INSERT INTO @Temp
VALUES(1, 'attr1', 'val1'),
(1, 'attr2', 'val2'),
(1, 'attr3', 'val3'),
(2, 'attr1', 'val4'),
(2, 'attr2', 'val5'),
(2, 'attr3', 'val6')
SELECT *
FROM (
SELECT ID, attribute_name, attribute_value
FROM @Temp
) p
PIVOT
(
MAX(attribute_value)
FOR attribute_name IN
(attr1, attr2, attr3)
) AS pvt
ORDER BY pvt.ID
答案 1 :(得分:0)
首先,通常id - 是唯一标识行的字段,第二个 - 只需将包含attr1,attr2等的表作为列。