代码之家  ›  专栏  ›  技术社区  ›  KateMak

是否将多行中的多列与唯一id组合?

  •  -1
  • KateMak  · 技术社区  · 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
    

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

    1 回复  |  直到 1 年前
        1
  •  1
  •   Harshit Jain    1 年前

    试试这个:

    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;
    

    enter image description here