SQL - 按日期和年份求和

Posted

技术标签:

【中文标题】SQL - 按日期和年份求和【英文标题】:SQL - SUM BY DATE and YEAR 【发布时间】:2022-01-05 11:09:59 【问题描述】:

我正在尝试撰写实时报告。截至目前,我可以按月汇总MONTH(DATEADD(MM, -1, GETDATE())),但它会增加 11 月的所有销售额。我需要它根据当前日期-1 个月的月份和年份求和。

P.S 我不能做 YEAR(GETDATE()) = 2021 的 where 子句,因为这需要是一个实时报告,以防我们想让它在过去 14 个月内运行。

SQL

SUM(
CASE
WHEN COALESCE(month(CONVERT(date,CONVERT(varchar(10),salesdwec.shipdate,120),101)), 0) = month(dateadd(mm, -1,getdate())) THEN
  salesdwec.orderquantity
  ELSE 0
END) AS 'PIROIR_MONTH'

【问题讨论】:

mysql SQL Server - 请更正您的标签。 请提供样本数据和所需结果,以便我们可视化您的要求。 请同时显示您的整个查询,包括您的GROUP BY 子句 嗨@JeanPierre 如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记,将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢。 【参考方案1】:

如果您正在使用 SQL-Server,那么这应该可以工作。

SELECT YEAR(salesdwec.shipdate) 'Year',MONTH(salesdwec.shipdate) 'Month',SUM(salesdwec.orderquantity)
FROM salesdwec
WHERE DATEDIFF(MONTH,salesdwec.shipdate,GETDATE()) = 1
GROUP BY YEAR(salesdwec.shipdate) ,MONTH(salesdwec.shipdate)

正如Dale K 已经提到的,如果您提供一些示例数据会有所帮助。

编辑:

查询将输出MonthYear 列以及订单数量。如果您只需要订购数量,您可以使用这个。

SELECT SUM(salesdwec.orderquantity)
FROM salesdwec
WHERE DATEDIFF(MONTH,salesdwec.shipdate,GETDATE()) = 1

【讨论】:

以上是关于SQL - 按日期和年份求和的主要内容,如果未能解决你的问题,请参考以下文章

DB2,按年份分组和求和,其中年份是列值

SQL:按日期分组并对列中的值求和

sql 分组 求累计值

在Python中按日期合并行和求和值[重复]

第144章 SQL函数 TO_DATE(二)

T-SQL 中的求和 IIF