如何将列连接成 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';
我有这个 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';