显示截至当前月份的所有月份的计数,包括零计数
Show counts for all months up to current month including zero counts
我当前基于检索 2018 年数据的查询:
SELECT DATENAME(MONTH, STARTDATE) AS MonthName, COUNT (*) AS TOTAL
FROM TABLEUSERS
WHERE YEAR(STARTDATE) = '2018'
GROUP BY MONTH(STARTDATE), DATENAME(MONTH,STARTDATE)
结果:
MonthName | TOTAL
January | 25
February | 20
March | 40
April | 11
May | 30
June | 0
July | 0
August | 0
September | 7
October | 55
November | 13
December | 0
如您所见,它正在检索列表中 2018 年的 December,我不想显示 12 月,我只想查看所有我们已经度过了几个月(截至目前为 11 月)。
结果还必须包含计数为零的月份。
在 SQL Server 2008(我认为)中,您可以使用以下内容:
SELECT DATENAME(MONTH, d) AS MonthName, COUNT(STARTDATE) AS Total
FROM (VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11)) AS numbers(n)
CROSS APPLY (SELECT DATEADD(MONTH, n, '2018-01-01')) AS dates(d)
LEFT JOIN TABLEUSERS ON YEAR(STARTDATE) = YEAR(d) AND MONTH(STARTDATE) = MONTH(d)
WHERE n < MONTH(GETDATE())
GROUP BY d
有一个(硬编码的)0 到 11 之间的数字列表,可让您生成 12 个日期。休息是直截了当的。
我当前基于检索 2018 年数据的查询:
SELECT DATENAME(MONTH, STARTDATE) AS MonthName, COUNT (*) AS TOTAL
FROM TABLEUSERS
WHERE YEAR(STARTDATE) = '2018'
GROUP BY MONTH(STARTDATE), DATENAME(MONTH,STARTDATE)
结果:
MonthName | TOTAL
January | 25
February | 20
March | 40
April | 11
May | 30
June | 0
July | 0
August | 0
September | 7
October | 55
November | 13
December | 0
如您所见,它正在检索列表中 2018 年的 December,我不想显示 12 月,我只想查看所有我们已经度过了几个月(截至目前为 11 月)。
结果还必须包含计数为零的月份。
在 SQL Server 2008(我认为)中,您可以使用以下内容:
SELECT DATENAME(MONTH, d) AS MonthName, COUNT(STARTDATE) AS Total
FROM (VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11)) AS numbers(n)
CROSS APPLY (SELECT DATEADD(MONTH, n, '2018-01-01')) AS dates(d)
LEFT JOIN TABLEUSERS ON YEAR(STARTDATE) = YEAR(d) AND MONTH(STARTDATE) = MONTH(d)
WHERE n < MONTH(GETDATE())
GROUP BY d
有一个(硬编码的)0 到 11 之间的数字列表,可让您生成 12 个日期。休息是直截了当的。