Есть ли способ заполнить пробел в дате, когда ReviewType не произошел с указателем даты и 0 вхождений - PullRequest
0 голосов
/ 08 января 2020

Есть ли способ заполнить пробел в дате, когда ReviewType не произошел с указателем даты и 0 вхождениями?

1 Ответ

1 голос
/ 08 января 2020

Используя таблицу чисел, вы можете создать даты, чтобы заполнить даты, отсутствующие в вашей таблице. В приведенном ниже запросе я использую master.dbo.spt_values ​​(который ограничен 2048). Тем не менее, это в значительной степени недокументированная таблица и в основном используется Microsoft. Вероятно, лучше создать свою собственную таблицу чисел и не полагаться на нее (см. этот пост ). Я использую это здесь только для того, чтобы показать, как можно использовать такую ​​таблицу.

DECLARE @dtStart DATE
SET @dtStart = dateadd(day, -7, getdate())

SELECT
    tblA.dateCompleted,
    Count(CASE ReviewType WHEN 1 THEN ReviewType END) AS NonPeak,
    Count(CASE ReviewType WHEN 2 THEN ReviewType END) AS AM,
    Count(CASE ReviewType WHEN 3 THEN ReviewType END) AS PM
FROM (
    SELECT dateadd(day, number, @dtStart) as [dateCompleted]
    FROM (
        SELECT number 
        FROM master.dbo.spt_values
        WHERE [type] = 'P'
        ) tbl
    WHERE dateadd(day, number, @dtStart) >= @dtStart
    ) tblA
    LEFT JOIN ALAN.dbo.qryPeakReviews tblB ON tblA.dateCompleted = tblB.dateCompleted 
        and tblB.elementID Like '%SI%'
WHERE tblA.dateCompleted >= DATEADD(day, -7, getdate())
    AND tblA.dateCompleted < GETDATE()
GROUP BY tblA.dateCompleted

Использование следующих тестовых данных (обратите внимание, что отсутствуют 1/4 и 1/6) ...

create table #test (dateCompleted date, ReviewType int, elementID varchar(10))

insert into #test 
values ('2020-01-01', 1, 'SI')
insert into #test 
values ('2020-01-02', 2, 'SI')
insert into #test 
values ('2020-01-03', 3, 'SI')
insert into #test 
values ('2020-01-05', 1, 'SI')
insert into #test 
values ('2020-01-07', 1, 'SI')

Получен следующий вывод (обратите внимание, что 1/4 & 1/6 включены с 0 значениями) ...

enter image description here

Подробнее о таблице master.dbo.spt_values ​​можно прочитать здесь

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