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

如何统计当前月份某列的总和?SQL查询修正需求

问题解决:仅统计当前年月的Amount总和

你的查询中,This Month的统计逻辑只匹配了月份,没有限定年份,所以会累加所有年份里对应月份的Amount数据。要实现仅统计当前年份的当前月份总和,需要在CASE条件里同时判断年份和月份。

修正后的SQL代码:

DECLARE @currentYear int
DECLARE @currentMonth int

SELECT @currentYear = DATEPART(year, GETDATE())
SELECT @currentMonth = DATEPART(month, GETDATE())

SELECT
  SUM(
    CASE
      -- 同时匹配当前年份和当前月份
      WHEN DATEPART(year,[Date]) = @currentYear AND DATEPART(month,[Date]) = @currentMonth THEN Amount
      ELSE 0
    END
  ) AS 'This Month',
  SUM(
    CASE
      WHEN DATEPART(year,[Date]) = @currentYear THEN Amount
      ELSE 0
    END
  ) AS 'This Year'
FROM Orders

另外,也可以用更简洁的日期范围判断来替代DATEPART,若Date列存在索引,这种写法的性能表现会更优:

DECLARE @currentMonthStart DATE = DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1)
DECLARE @nextMonthStart DATE = DATEADD(MONTH, 1, @currentMonthStart)
DECLARE @currentYearStart DATE = DATEFROMPARTS(YEAR(GETDATE()), 1, 1)

SELECT
  SUM(CASE WHEN [Date] >= @currentMonthStart AND [Date] < @nextMonthStart THEN Amount ELSE 0 END) AS 'This Month',
  SUM(CASE WHEN [Date] >= @currentYearStart AND [Date] < DATEADD(YEAR, 1, @currentYearStart) THEN Amount ELSE 0 END) AS 'This Year'
FROM Orders

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:34:52