Подсчет записей по месяцам, начиная с июля по июнь - PullRequest
0 голосов
/ 18 января 2020

Мы используем календарные месяцы июль-июнь вместо января-декабря. У меня есть запрос, который подсчитывает каждую запись по месяцам и добавляет записи за предыдущий месяц в новый месяц с января по Fab. Есть ли способ начать с июля месяца и добавить счетчики июля к августу и августу к октябрю и так далее ...

Вот запрос:

SELECT ReviewType,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 1 THEN ReviewType END) AS Jan,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 2 THEN ReviewType END) AS Feb,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 3 THEN ReviewType END) AS Mar,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 4 THEN ReviewType END) AS Apr,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 5 THEN ReviewType END) AS May,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 6 THEN ReviewType END) AS Jun,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 7 THEN ReviewType END) AS Jul,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 8 THEN ReviewType END) AS Aug,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 9 THEN ReviewType END) AS Sep,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 10 THEN ReviewType END) AS Oct,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 11 THEN ReviewType END) AS Nov,
       COUNT(CASE WHEN MONTH(dateCompleted) <= 12 THEN ReviewType END) AS Dec,
       COUNT(ReviewType) AS Result
FROM ALAN.dbo.qryPeakReviews 
WHERE fiscalYear = 1819
GROUP BY ReviewType;

Вот вывод:

ReviewType  Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Result
1           0   17  46  57  67  72  72  72  83  87  93  94  94
2           0   2   22  27  31  34  34  37  43  48  48  48  48
3           0   1   16  28  34  37  37  39  45  47  49  49  49

1 Ответ

0 голосов
/ 18 января 2020

Добавьте 6 ко всем месяцам и получите остаток от деления результата с 12:

SELECT ReviewType,
       COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 = 1 THEN ReviewType END) AS Jul,
       COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 2 THEN ReviewType END) AS Aug,
       COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 3 THEN ReviewType END) AS Sep,
       COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 4 THEN ReviewType END) AS Oct,
       COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 5 THEN ReviewType END) AS Nov,
       COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 6 THEN ReviewType END) AS Dec,
       COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 7 THEN ReviewType END) AS Jan,
       COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 8 THEN ReviewType END) AS Feb,
       COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 9 THEN ReviewType END) AS Mar,
       COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 10 THEN ReviewType END) AS Apr,
       COUNT(CASE WHEN (MONTH(dateCompleted) + 6) % 12 BETWEEN 1 AND 11 THEN ReviewType END) AS May,
       COUNT(ReviewType) AS Jun,
       COUNT(ReviewType) AS Result
FROM ALAN.dbo.qryPeakReviews 
WHERE fiscalYear = 1819
GROUP BY ReviewType;

Я изменил проверку неравенства с BETWEEN 1 AND ..., потому что июнь рассчитывается как 0 и должен не будут включены. Также нет никаких оснований считать что-то особенное за последний месяц июня. Это итог всего года.

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