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

基于Date_Year和Date_month列分组3个月区间的SQL问题求助

解决跨年度3个月销售额区间统计的SQL问题

嘿,我一眼就看出你遇到的问题啦——第二个跨年度的3个月区间统计没生效,核心原因是CASE语句里的逻辑判断用了AND,但这两个条件根本不可能同时满足!

问题分析

你写的第二个CASE条件是:

(date_year = 2016 AND date_month IN (11,12)) AND ((date_year = 2017 AND date_month = 1))

这意味着要找一条记录同时属于2016年11-12月并且2017年1月,显然没有这样的数据,所以SUM的结果肯定是NULL或者0。我们需要的是“满足前者或者满足后者”的记录,所以应该用OR代替AND。

修正后的SQL代码

SELECT 
    -- 第一组:2016年10-12月
    [2016_Oct_Dec] = SUM(CASE WHEN date_year = 2016 AND date_month IN (10,11,12) THEN Sales_amt END),
    -- 第二组:2016年11-12月 + 2017年1月
    [2016/17_Nov_Jan] = SUM(CASE WHEN (date_year = 2016 AND date_month IN (11,12)) OR (date_year = 2017 AND date_month = 1) THEN Sales_amt END)
FROM your_table_name; -- 记得替换成你的实际表名

更优雅的优化方案(如果有完整日期字段)

如果你的表中有完整的日期字段(比如sale_date,类型为DATE/DATETIME),建议直接用日期区间来判断,这样既避免拆分年月的逻辑错误,也更灵活易维护:

SELECT 
    [2016_Oct_Dec] = SUM(CASE WHEN sale_date BETWEEN '2016-10-01' AND '2016-12-31' THEN Sales_amt END),
    [2016/17_Nov_Jan] = SUM(CASE WHEN sale_date BETWEEN '2016-11-01' AND '2017-01-31' THEN Sales_amt END)
FROM your_table_name;

这样就能正确统计两个区间的销售额啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:12:15