将多行中的多列与唯一的 id 合并?

问题描述 投票:0回答:1

我试图弄清楚如何创建一个查询,该查询将获取下面的数据,其中有一个 UniqueId 列和附加列的名称值对,并像第二个表一样显示它,但似乎无法正确显示。我的数据是什么样的:

UniqueId    ColName    ColValue    UpdateTimestamp
123         Col1       ValueA      2023-08-15T11:25:14-01:00
123         Col2       ValueB      2023-08-15T11:25:14-01:00
123         Col3       ValueC      2023-08-15T11:25:14-01:00
456         Col1       ValueD      2023-08-15T11:25:14-01:00
456         Col2       ValueE      2023-08-15T11:25:14-01:00
456         Col3       ValueF      2023-08-15T11:25:14-01:00
789         Col1       ValueG      2023-08-15T11:25:14-01:00
789         Col2       ValueH      2023-08-15T11:25:14-01:00
789         Col3       ValueI      2023-08-15T11:25:14-01:00

我希望它在我的查询中看起来像什么:

UniqueId    Col1    Col2    Col3
123         ValueA  ValueB  ValueC
456         ValueD  ValueE  ValueF
789         ValueG  ValueH  ValueI

如何通过选择使数据看起来像上表?

sql sql-server select subquery
1个回答
0
投票

试试这个:

SELECT
    UniqueId,
    MAX(CASE WHEN ColName = 'Col1' THEN ColValue END) AS Col1,
    MAX(CASE WHEN ColName = 'Col2' THEN ColValue END) AS Col2,
    MAX(CASE WHEN ColName = 'Col3' THEN ColValue END) AS Col3
FROM
    <YourTableName>
GROUP BY
    UniqueId;

© www.soinside.com 2019 - 2024. All rights reserved.