首页 > 解决方案 > 在 SQL 中计算每个月 1 日的记录数

问题描述

我有一个数据集,我想在其中查询并获取每个月第一天的记录计数的输出。

数据

 name      date1
 hello     july 1 2018
 hello     july 1 2018
 hello     july 10 2018
 sure      august 1 2019
 sure      august 1 2019
 why       august 20 2019
 ok        september 1 2019
 ok        september 1 2019
 ok        september 1 2019
 sure      september 5 2019

期望的

ID   MONTH       Day    YEAR
2    July        1      2018
2    August      1      2019
3   September    1      2019

我们只计算每个月 1 日的记录

正在做

USE [Data]
SELECT    COUNT(*) AS ID , MONTH(date1) AS MONTH, YEAR(date1) AS YEAR
FROM      dbo.data1
GROUP BY  MONTH(date1), YEAR(date1)
ORDER BY YEAR ASC

这仅输出年份和月份任何建议表示赞赏

标签: sqlsql-servertsql

解决方案


假设您正在使用日期的隐式转换

例子

SELECT  COUNT(*) AS ID, 
        DATENAME(MONTH,date1) AS MONTH, 
        DATEPART(DAY,date1) as DAY,
        YEAR(date1) AS YEAR
FROM    dbo.data1
WHERE  DAY(date1)=1
GROUP BY YEAR(date1),DATENAME(MONTH,date1),DATEPART(DAY,date1)
ORDER BY YEAR ASC

结果

ID  MONTH       DAY     YEAR
2   July        1       2018
2   August      1       2019
3   September   1       2019

推荐阅读