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

Snowflake SQL如何实现SUM计算指定值在所有行重复展示

SELECT
    TO_CHAR(TO_DATE(ab.activity_date), 'YYYY-MM-DD') AS "Activity Date",
    COALESCE(SUM(ab.2015), 0) AS "sum_2015",
    COALESCE(MAX(SUM(CASE WHEN TO_CHAR(TO_DATE(ab.activity_date), 'YYYY-MM-DD') = '2015-01-31' THEN ab.2015 END)) OVER (), 0) AS "eoy_2015",
    COALESCE(SUM(ab.2016), 0) AS "sum_2016",
    COALESCE(SUM(ab.arr_2017), 0) AS "sum_2017"
FROM ab
GROUP BY TO_DATE(ab.activity_date)

逻辑说明

核心修改是在原eoy_2015的聚合逻辑外层套了全局窗口函数:

  1. 内层SUM(CASE ...)保留原有逻辑,计算得到仅2015-01-31行有对应求和值、其余行结果为0的中间值
  2. 外层MAX(...) OVER ()没有设置分区、排序条件,作用域为查询返回的所有行,直接取所有行中该中间值的最大值,也就是2015-01-31行的求和结果,自动同步到所有行
  3. 保留COALESCE做空值兼容,当表中不存在2015-01-31的记录时返回0而非NULL

同时修正了原SQL中sum_2017字段尾部多余的逗号,避免执行语法报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 03:54:04