如何在Snowflake的LISTAGG函数中使用DESC对拼接数据降序排序?
解决Snowflake中LISTAGG按降序拼接的问题
错误原因
你直接将DESC跟在LISTAGG的分隔符后面的写法不符合Snowflake的语法规则,LISTAGG的排序逻辑必须通过WITHIN GROUP (ORDER BY ...)子句来指定。
正确查询写法
SELECT SKU, LISTAGG(DISTINCT Date, ';') WITHIN GROUP (ORDER BY Date DESC) AS Processed_Dates FROM SKU_Data GROUP BY SKU;
关键说明
- 替换
SELECT DISTINCT为GROUP BY SKU:LISTAGG是聚合函数,按SKU分组才能正确聚合每个SKU对应的日期,这种写法比DISTINCT更贴合聚合逻辑,结果也更准确。 WITHIN GROUP (ORDER BY Date DESC):这部分是核心,用于指定LISTAGG拼接时的排序规则,让日期按降序排列后再用分号拼接。- 保留
DISTINCT:如果同一个SKU存在重复日期,该关键字会先对日期去重再拼接;若无需去重,直接去掉DISTINCT即可。
内容的提问来源于stack exchange,提问作者RK03
相关产品推荐
相关产品推荐

