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

PostgreSQL中按特定规则计算当年与上年金额总和的方法

实现需求的SQL方案

思路说明

先计算每个年份的Amount 1总和与Amount 2总和,再通过自关联获取当前年份上一年的Amount 2总和,最后针对2023年的特殊规则做单独处理,同时用COALESCE处理无数据年份的默认值。

完整SQL代码

-- 预计算每年的金额汇总
WITH yearly_summary AS (
    SELECT
        年份,
        SUM(`Amount 1`) AS total_amount1,
        SUM(`Amount 2`) AS total_amount2
    FROM
        你的数据表名 -- 替换为实际表名
    GROUP BY
        年份
)
-- 关联上年数据生成最终结果
SELECT
    curr.年份,
    -- 2023年取自身Amount1总和,其余年份取自身Amount2总和
    CASE
        WHEN curr.年份 = 2023 THEN curr.total_amount1
        ELSE curr.total_amount2
    END AS 当年总计,
    -- 上年总计取上一年的Amount2总和,无数据则显示0
    COALESCE(prev.total_amount2, 0) AS 上年总计
FROM
    yearly_summary curr
LEFT JOIN
    yearly_summary prev ON curr.年份 = prev.年份 + 1
ORDER BY
    curr.年份 DESC;

结果验证

根据你的示例数据,yearly_summary的中间计算结果为:

年份total_amount1total_amount2
202330004000
202265006000
2021130008500

最终查询结果会完全匹配你需要的输出:

年份当年总计上年总计
202330006000
202260008500
202185000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:53:14