无法获取 SQL 查询以将同一 ID 的列中的值转换为具有自己的列的单行
Can't get SQL query to turn values in column for same ID into a single row with their own columns
这里是 table 数据的例子
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
我试过这样做:,但无法获得我的具体情况所需的结果。
我真的没有像样的 SQL 可以在这里分享作为起点,因为我真的需要从头开始。我希望这里有人能帮助我。
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
首先,通常是 id - 是唯一标识行的字段,其次 - 只需创建一个包含 attr1、attr2 等作为列的 table。
这里是 table 数据的例子
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
我试过这样做:
我真的没有像样的 SQL 可以在这里分享作为起点,因为我真的需要从头开始。我希望这里有人能帮助我。
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
首先,通常是 id - 是唯一标识行的字段,其次 - 只需创建一个包含 attr1、attr2 等作为列的 table。