我有一个表,其中的行包含来自不同来源的相同地址的数据-

RowID Address Source
1 Addr1 Src 1
1 Addr1 Src 2
1 Addr1 Src 3

我想要实现的是-

RowID Address Source
1 Addr1 Src 1, Src2, Src3

我用的是snowflake.

推荐答案

你可以用listagg来实现它.

如果您需要特殊的订单,您需要在列表后面添加以下内容

WITHIN GROUP (ORDER BY sortcolumn DESC)

没有排序的查询是

SELECT
    RowID,  Address, listagg(Source, ', ')
FROM table1
GROUP BY RowID  Address

Sql相关问答推荐

更新在两个或多个面中具有交点的面

基于多个字段删除Access中的重复记录,同时保留最低优先级

为什么在这种情况下我不能使用LAG函数?

转换表中的数据

如何优化我的功能以减少花费的时间?

你能过滤一个列表只返回多个结果吗?

对于多字节字符,SQL Server中的DATALENGTH返回1字节

在WHERE EXISTS子查询中,列返回是否重要?

SQL SUM Filter逻辑解释

复制行并根据 Oracle SQL 中其他表的值更改值

错误:postgresql 中缺少表评级的 FROM 子句条目

当 2 列具有静态值并且第 3 列使用运算符 IN 时,对 PostgreSQL 和 3 列上的复杂索引的最佳查询

Oracle函数中无法动态迭代创建的SYS_REFCURSOR

根据潜在空值的条件对记录进行计数

插入行时的行安全策略问题

Select 多年的日期范围

在 SQL 的每行选项中 Select 最大值

如何根据 Amazon Athena 中的多个列值删除重复行?

使用一组值进行分组和计数

pyspark 将列转换为行