繁体   English   中英

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

[英]How to concat columns into a string in Snowflake?

我有这张表Movie ,其列定义为(CustomerId, MovieId, Name) ,我想通过将它们连接成 position 中的字符串来获取这些列,它们在 Snowflake 中定义,通过ORDINAL_POSITION进行排序。

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

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

Output:

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

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

根据设计,每个表的列名应该是唯一的。 可能表存在于多个模式/数据库中:

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';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM