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

Snowflake中按日期分组的分区多条目累积求和实现

基于你当前的查询已经得到正确的累积求和值,下面提供两种对应你需求的格式实现方案:

方案1:同一日期仅首行显示,其余行日期为空(报表简洁展示)

这种格式会让同一TXN_DATE下的记录共用一个日期值,其余行日期列留空,适合减少冗余展示:

SELECT
    CASE WHEN rn = 1 THEN TXN_DATE ELSE NULL END AS TXN_DATE,
    PK1,
    PK2,
    QTY,
    SUM_QTY
FROM (
    SELECT
        PK1,
        PK2,
        TXN_DATE,
        QTY,
        SUM(QTY) OVER (PARTITION BY PK1,PK2 ORDER BY TXN_DATE ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS SUM_QTY,
        -- 标记每个日期分组内的行号
        ROW_NUMBER() OVER (PARTITION BY TXN_DATE ORDER BY PK1, PK2) AS rn
    FROM MY_TABLE
) t
ORDER BY TXN_DATE, PK1, PK2;
方案2:按日期分组展示明细+可选日期汇总

如果需要明确按TXN_DATE分组展示所有记录及对应累积值,甚至添加日期级的汇总信息,可使用以下两种写法:

基础明细版

仅按日期分组展示所有PK组合的当日数量及累积值:

SELECT
    TXN_DATE,
    PK1,
    PK2,
    QTY,
    SUM_QTY
FROM (
    SELECT
        PK1,
        PK2,
        TXN_DATE,
        QTY,
        SUM(QTY) OVER (PARTITION BY PK1,PK2 ORDER BY TXN_DATE ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS SUM_QTY
    FROM MY_TABLE
) t
ORDER BY TXN_DATE, PK1, PK2;

带汇总版

额外添加每日总数量及各PK组合的累积值汇总,方便快速查看整体情况:

SELECT
    COALESCE(CAST(TXN_DATE AS VARCHAR), '总计') AS TXN_DATE,
    COALESCE(PK1, '所有PK1') AS PK1,
    COALESCE(PK2, '所有PK2') AS PK2,
    SUM(QTY) AS DAY_QTY,
    MAX(SUM_QTY) AS CUMULATIVE_SUM
FROM (
    SELECT
        PK1,
        PK2,
        TXN_DATE,
        QTY,
        SUM(QTY) OVER (PARTITION BY PK1,PK2 ORDER BY TXN_DATE ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS SUM_QTY
    FROM MY_TABLE
) t
GROUP BY ROLLUP(TXN_DATE, PK1, PK2)
ORDER BY TXN_DATE, PK1, PK2;

说明

  • 方案1适合生成简洁的明细报表,避免日期列重复显示;
  • 方案2的基础版适合需要清晰按日期维度查看每条记录累积情况的场景,带汇总版则更适合需要快速掌握每日及整体数据概况的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:15:30