SNOWFLAKE SQL 根据 ID 将列值转换为行

时间:2021-06-10 14:35:50

标签: sql snowflake-cloud-data-platform snowflake-schema

嗨,我正在使用雪花并有一张玩家桌 enter image description here

我在表中有 ID 和 Player 列,我试图根据 ID 值在一行中列出所有玩家。

因此,例如 ID 1610612748 将只有一行,并且该行的玩家列中列出的所有玩家用逗号分隔。

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找 LIST_AGG 聚合函数。这样的事情应该可以工作:

创建示例表:

create or replace transient table test_table(id number, player number) as
select
    column1 as id,
    column2 as player
from
values
       (1610612748, 123),
       (1610612748, 231),
       (1610612748, 333),
       (1610612748, 321),
       (1111111111, 123),
       (1111111111, 421),
       (2222222222, 123)
;

运行查询

select
    id,
    listagg(player ,',')
from test_table
group by id

结果

+----------+--------------------+
|ID        |LISTAGG(PLAYER ,',')|
+----------+--------------------+
|1111111111|123,421             |
|2222222222|123                 |
|1610612748|123,231,333,321     |
+----------+--------------------+