如何将列连接成 Snowflake 中的字符串?

How to concat columns into a string in Snowflake?

我有这个 table Movie,列定义为 (CustomerId, MovieId, Name),我想通过将它们连接成一个字符串来获取这些列,方法是在它们在 Snowflake 中定义的位置,通过通过 ORDINAL_POSITION.

订购

所以我发现使用 LISTAGG() 可以让我非常接近我想要的。通过执行以下操作,我接近了我想要的字符串,但我得到了重复的列名。我看到人们会根据 table 中的列使用分组依据和排序依据,而不是使用 ORDINAL_POSITION。所以这就是我正在努力寻找解决方案的原因。我发现 COALESCE 可以提供帮助,因为它 returns 第一个非空值,但是,我正在努力将其集成到我的查询中。

//Query
select listagg(column_name, ',') within group (order by ORDINAL_POSITION) 
from information_schema.columns 
where table_name='Movie';

输出:

CUSTOMERID,CUSTOMERID,CUSTOMERID,MovieId,MovieId,MovieId,
Name,Name,Name

关于如何完成此操作的任何帮助或想法?

按照 table 的设计,列名应该是唯一的。可能 table 存在多个 schemas/databases:

select listagg(column_name, ',') within group (order by ORDINAL_POSITION) 
from information_schema.columns 
where table_name='Movie'
  and table_schema = 'XXX'
  and table_catalog = 'YYY';