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

如何在SQL中按月份汇总过去24个月的销售数据(基于表内最新日期)

销售数据近24个月分产品月度汇总方案

1. 基于表内最新日期筛选近24个月数据

核心逻辑为先提取表内所有销售记录的最大日期,再以此为基准向前推24个月作为筛选阈值,WHERE条件通用写法如下:

WHERE SalesDate >= DATE_SUB((SELECT MAX(SalesDate) FROM 你的销售表名), INTERVAL 24 MONTH)

该写法完全基于表内的业务数据时间计算范围,不受服务器当前系统时间影响,匹配需求。

2. 按月份聚合数据并展示为月末日期

要把单日日期聚合到月份维度,同时输出为当月最后一天的格式(和给出的预期结果格式一致),需要先对日期做月份处理后取月末值,再按处理后的月份、产品字段分组求和销量即可,完整SQL示例(以MySQL为例):

SELECT 
  LAST_DAY(SalesDate) AS SalesMONTH,
  Product,
  SUM(SLSqty) AS SLSqty
FROM 你的销售表名
WHERE SalesDate >= DATE_SUB((SELECT MAX(SalesDate) FROM 你的销售表名), INTERVAL 24 MONTH)
GROUP BY LAST_DAY(SalesDate), Product
ORDER BY SalesMONTH, Product;

不同数据库的函数适配:

  • SQL Server:用EOMONTH(SalesDate)替代LAST_DAY(SalesDate),时间计算写为DATEADD(MONTH, -24, (SELECT MAX(SalesDate) FROM 你的销售表名))
  • Oracle:用LAST_DAY(TRUNC(SalesDate, 'MM'))替代LAST_DAY(SalesDate),时间计算写为ADD_MONTHS((SELECT MAX(SalesDate) FROM 你的销售表名), -24)

注:给出的预期结果中存在同月份同产品重复行,属于笔误,正常分组聚合后同一月份同一产品只会生成一条汇总记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:45:03