Показать счет за все месяцы до текущего месяца, включая ноль - PullRequest
0 голосов
/ 22 ноября 2018

Мой текущий запрос, основанный на получении данных за 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 год в списке, и я не хочу, чтобы декабрь был показан, мне интересно только просмотреть данные за все месяцы, через которые мы прошли (ноябрь по состоянию на данный момент).

Результаттакже должен содержать месяцы, в которых число равно нулю.

1 Ответ

0 голосов
/ 22 ноября 2018

В 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 дат.Отдых прямо вперед.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...