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

如何使用SQL根据列中的唯一值将多行组合成一行?

  •  1
  • Ali  · 技术社区  · 10 月前

    enter image description here

    我只有一张表要处理,不想创建新表。

    例如,在屏幕截图中:我想根据列a中的唯一值组合行,并将其转换为右侧的表。

    我如何编写SQL语句来实现这一点?

    我在Snowflake中使用SQL。

    谢谢!

    我试着在网上搜索,但找不到适合我需求的例子。

    1 回复  |  直到 10 月前
        1
  •  0
  •   Krutarth    10 月前
    SELECT 
        "account ID",
        MAX(CASE WHEN rn = 1 THEN "question ID" END) AS "question ID (1)",
        MAX(CASE WHEN rn = 2 THEN "question ID" END) AS "question ID (2)",
        MAX(CASE WHEN rn = 3 THEN "question ID" END) AS "question ID (3)",
        MAX(CASE WHEN rn = 1 THEN "status" END) AS "status (1)",
        MAX(CASE WHEN rn = 2 THEN "status" END) AS "status (2)",
        MAX(CASE WHEN rn = 3 THEN "status" END) AS "status (3)"
    FROM (
        SELECT "account ID", "question ID", "status", 
               ROW_NUMBER() OVER (PARTITION BY "account ID" ORDER BY "question ID") AS rn
        FROM your_table_name
    ) AS subquery
    GROUP BY "account ID";
    

    这将符合您的要求。