You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake双表关联后错误值去重拼接获取唯一行问题咨询

Snowflake跨表取唯一值拼接SQL调整方案

问题根因

你原有SQL存在两个核心问题导致去重失败:

  • 直接拼接两表ERROR_NAME后再执行聚合,未对跨表的重复错误值做提前去重
  • 额外的收尾逗号处理逻辑冗余,Snowflake原生LISTAGG函数支持直接指定分隔符,无需手动处理

解决方案

提供两种可直接使用的写法:

写法1:逻辑通用兼容性最优

先将两表同ID的错误值合并去重后再聚合,适配所有场景:

SELECT 
  ID,
  LISTAGG(ERROR_NAME, ',') WITHIN GROUP (ORDER BY ERROR_NAME) AS ERROR_NAME_CUSTOM
FROM (
  SELECT ID, ERROR_NAME FROM TABLE1
  UNION -- UNION自动去重,不要替换为UNION ALL
  SELECT ID, ERROR_NAME FROM TABLE2
) t
GROUP BY ID

写法2:基于原有JOIN逻辑调整

适合需要保留两表关联逻辑、额外关联字段的场景:

SELECT 
  E.ID,
  ARRAY_TO_STRING(ARRAY_DISTINCT(ARRAY_CAT(ARRAY_AGG(E.ERROR_NAME), [I.ERROR_NAME])), ',') AS ERROR_NAME_CUSTOM
FROM TABLE1 E
JOIN TABLE2 I ON I.ID = E.ID
GROUP BY E.ID, I.ERROR_NAME

效果说明

以上两种写法都会自动合并两表同ID下的ERROR_NAME并剔除重复值,你示例中ID为2的场景最终输出为2,Er1,Er2,Er4,符合预期。

内容的提问来源于stack exchange,提问作者Payal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:24:03