无法获取 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。