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

基于财年财期关联预算与销售:带聚合的CASE语句问题

解决预算表按特定GL账户汇总的SQL问题

场景1:只统计特定GL账户的预算总额

如果仅需汇总指定GL_ACCOUNT_NUMBER的预算,直接在WHERE子句中过滤即可,这种方式执行效率更高:

SELECT 
    BRANCH_ID, BRANCH_NAME, FISCAL_YEAR, FISCAL_PERIOD, 
    SUM(GL_BUDGET) AS BUDGET_TOTAL
FROM
    connection.subsection.FACT_BRANCH_BUDGET
WHERE
    FISCAL_YEAR = '2022'
    -- 替换成你需要的具体GL账户编码,多个用IN,单个用=
    AND GL_ACCOUNT_NUMBER IN ('1001', '2002')
GROUP BY 
    BRANCH_ID, BRANCH_NAME, FISCAL_YEAR, FISCAL_PERIOD
ORDER BY 
    BRANCH_ID, BRANCH_NAME, FISCAL_YEAR, FISCAL_PERIOD

场景2:需区分特定账户与其他账户的汇总

如果要在同一结果中仅统计特定账户的预算(其他账户不计入或归为0),把CASE语句嵌套在SUM函数里即可:

SELECT 
    BRANCH_ID, BRANCH_NAME, FISCAL_YEAR, FISCAL_PERIOD, 
    SUM(CASE 
            WHEN GL_ACCOUNT_NUMBER = '3003' THEN GL_BUDGET 
            ELSE 0 -- 不需要统计的账户填0,或者用NULL表示无数据
        END) AS TARGET_ACCOUNT_BUDGET
FROM
    connection.subsection.FACT_BRANCH_BUDGET
WHERE
    FISCAL_YEAR = '2022'
GROUP BY 
    BRANCH_ID, BRANCH_NAME, FISCAL_YEAR, FISCAL_PERIOD
ORDER BY 
    BRANCH_ID, BRANCH_NAME, FISCAL_YEAR, FISCAL_PERIOD

常见报错原因

  • 之前可能把CASE放在SELECT里但未嵌套进聚合函数,导致分组逻辑冲突(非聚合字段未出现在GROUP BY中)
  • 检查CASE语法:必须写全WHEN ... THEN ... ELSE ... END结构,不能遗漏关键字
  • 注意GL_ACCOUNT_NUMBER的类型:如果是数值型,不要加单引号,避免类型不匹配报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:25:19