按月编写 SQL 查询

Posted

技术标签:

【中文标题】按月编写 SQL 查询【英文标题】:Write SQL Query by Month 【发布时间】:2021-12-02 14:44:58 【问题描述】:

对于下面的 Excel table,如何将Orders 列与month 相加?我编写了以下查询,但我必须为接下来的每个月更改查询,这似乎是一个非常手动的过程。提前致谢。

更新:

通过提供 2 个不正确但非常手动的每月计算来对冲我的答案(需要调整每个后续月份或年份的查询)。

第 1 部分 - 计算 1 个总数:

SELECT SUM(orders)
FROM table

第 2 部分 - 每个月计算 1 个数字:

SELECT SUM(orders)
FROM table
WHERE summary_date BETWEEN #01/01/2015# AND #01/31/2015#;

【问题讨论】:

为什么不创建一个数据透视表呢?这本身就知道如何按月汇总。 是的,我认为还有其他可能性,但我被要求在 SQL 中使用 SQL 查询来完成。 使用 SQL,您可以使用 MONTH() 函数和 GROUP BY()。 谢谢@Duston - 就是这样。看起来如何,我需要使用 As 定义任何变量吗?谢谢 【参考方案1】:

数据:

sellDate    qty
2021-01-15  1
2021-01-21  2
2021-02-21  2
2021-02-01  29
2021-01-15  1
2021-01-15  1
2021-01-15  1
2020-02-01  29
2021-01-15  1

查询

select year(selldate), month(selldate) as month, count(selldate) as qty, sum(qty) as amt
from [wrox].[dbo].[Test]
where selldate is not null
group by year(selldate), month(selldate)

结果

year    month   qty amt
2021    1       6   7
2020    2       1   29
2021    2       2   31

如果您不想将年份和月份放在不同的列中,可以将它们连接起来。但这看起来就像您要求的那样。

顺便说一句,这是 MS SQL 2014。

【讨论】:

谢谢@Duston!

以上是关于按月编写 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

sql按月查询语句

sql按月模糊查询

SQL 查询:计数,按月-年分组,具有多个日期字段

sql截止上月查询语句,按月统计

SQL查询将数据按字段(2017-08-15 11:34:05)进行按月分组

sql 统计查询(按月统计)