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

如何在Snowflake SQL中按ID分组并保持字段顺序,合并重复列值?

Snowflake SQL实现分组聚合并保留字段顺序/合并同值列

需求说明

  • 按ID字段分组
  • 将Sub_ID、Value、QTY字段按原有行顺序合并为逗号分隔的字符串
  • 若Currency或UOM在同一分组内所有值完全相同,则仅显示一次该值

原始数据

IDSub_IDValueCurrencyQTYUOM
1001110USD1cm
10012200USD100cm
1001390USD10cm

期望结果

IDSub_IDValueCurrencyQTYUOM
10011,2,310,200,90USD1,100,10cm

实现SQL代码

SELECT
    ID,
    LISTAGG(Sub_ID, ',') WITHIN GROUP (ORDER BY Sub_ID) AS Sub_ID,
    LISTAGG(Value, ',') WITHIN GROUP (ORDER BY Sub_ID) AS Value,
    MAX(Currency) AS Currency,
    LISTAGG(QTY, ',') WITHIN GROUP (ORDER BY Sub_ID) AS QTY,
    MAX(UOM) AS UOM
FROM
    your_table_name
GROUP BY
    ID;

代码说明

  • LISTAGG(column, separator) WITHIN GROUP (ORDER BY sort_column):Snowflake中用于将分组内的字段值按指定顺序合并为字符串的函数,这里通过ORDER BY Sub_ID确保合并顺序和原始数据一致
  • MAX(Currency)/MAX(UOM):由于同一ID分组内这两个字段的值完全相同,使用MAX(或MIN)函数即可获取唯一值,避免重复显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:22:27