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

如何在一次查询中统计全年12个月各自的求和结果?

修改SQL查询以自动返回全年各月份求和结果

原查询通过硬编码月份获取指定商品的单月销量总和,代码如下:

EKA = CONVERT(DECIMAL(10,0),
    (SELECT ISNULL(SUM(LP.QTY), 0) 
     FROM Invoice LP
     WHERE LP.ARTICLE = A.ARTICLE
       AND YEAR(LP.DATE) = YEAR(GETDATE()) 
       AND MONTH(LP.date) = 1/2/3/4/5/6/7/8/9/10/11/12)
FROM ARTICLE A
WHERE A.ARTICLE = 'A001'

修改后的查询方案

无需硬编码月份,自动生成1-12月的销量汇总,每行对应一个月份:

-- 生成1到12月的月份序列
WITH Months AS (
    SELECT 1 AS MONTH
    UNION ALL
    SELECT MONTH + 1 FROM Months WHERE MONTH < 12
)
SELECT 
    m.MONTH,
    CONVERT(DECIMAL(10,0), ISNULL(SUM(LP.QTY), 0)) AS EKA
FROM Months m
LEFT JOIN Invoice LP 
    ON MONTH(LP.DATE) = m.MONTH 
    AND YEAR(LP.DATE) = YEAR(GETDATE())
    AND LP.ARTICLE = 'A001'
GROUP BY m.MONTH
ORDER BY m.MONTH;

说明

  • 用CTE Months 生成1至12的月份列表,确保每个月份都有返回记录,即使该月无销售数据
  • 通过左连接关联Invoice表,匹配当前年份对应月份的指定商品记录
  • 按月份分组求和,用ISNULL处理无数据场景,保证返回0而非NULL
  • 最终结果按月份升序排列,符合需求格式

输出示例

MONTHEKA
1100
2110
390
......
1140
12150

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 02:08:25