Добавление недостающих дат из SQL-запроса - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь добавить пропущенные даты в свой запрос, чтобы мои результаты выглядели так:

10/22/2018 15
10/21/2018 0
10/20/2018 14

Вместо этого:

10/22/2018 15
10/20/2018 14

Я хочу перечислить последние 300 дней, даже если выходное значение равно 0.

Вот мой запрос:

SELECT TOP (300)
    CAST(createddate as DATE),
    count(DISTINCT ID)
FROM table
GROUP BY CAST(createddate as DATE)
ORDER BY CAST(createddate as DATE) DESC

1 Ответ

0 голосов
/ 23 октября 2018

Вы можете использовать рекурсивный CTE для генерации данных:

WITH dates as (
      SELECT MAX(CAST(createddate as date)) as dte, 1 as lev
      FROM table
      UNION ALL
      SELECT DATEADD(day, -1, dte), lev + 1
      FROM dates
      WHERE lev < 300
     )
SELECT COUNT(DISTINCT t.ID)
FROM dates d LEFT JOIN
     table t
     ON d.dte = CAST(t.createddate as DATE)
GROUP BY d.dte
ORDER BY d.dte DESC
OPTION (MAXRECURSION 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...