Найти количество записей, созданных и обновленных для каждой комбинации ключей в таблице фактов - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть таблица фактов, которая выглядит как таблица TBL ниже.У меня есть требование найти количество записей, созданных и обновленных для каждой комбинации клавиш.Мой требуемый вывод выглядит как таблица ниже.Пожалуйста, найдите сценарий MS SQL Server, который я делал до сих пор, однако этот запрос выполняется очень медленно в производственной базе данных из-за большого объема данных.Есть ли способ переписать тот же сценарий в лучшую сторону.

SELECT A.*,B.DateupdatedCount 
FROM
(
    SELECT DateKey
        ,Key1
        ,Key2
        ,Key3
        ,COUNT(*) AS DateCreatedCount
    FROM TBL Fact
    GROUP BY DateKey
        ,Key1
        ,Key2
        ,Key3
) A 
FULL JOIN 
(
    SELECT YEAR(DateUpdated) * 10000 + MONTH(DateUpdated) * 1000 + DAY(DateUpdated) AS DateKey
        ,Key1
        ,Key2
        ,Key3
        ,COUNT(*) AS DateUpdatedCount
    FROM TBL Fact
    GROUP BY DateUpdated
        ,Key1
        ,Key2
        ,Key3
) B ON A.DateKey = B.DateKey 
    AND A.Key1 = B.Key1 
    AND A.Key2 = B.Key2 
    AND A.Key3 = B.Key3

Исходная таблица TBL:

DateKey |Key1|Key2|Key3|DateCreated|DateUpdated
20180101    1   1   3   1/1/2018    1/5/2018
20180102    1   1   3   1/2/2018    1/5/2018
20180103    1   1   3   1/3/2018    1/5/2018
20180104    1   1   3   1/4/2018    1/5/2018
20180105    1   1   3   1/5/2018    1/5/2018
20180106    6   2   4   1/6/2018    1/6/2018
20180107    6   2   4   1/7/2018    1/6/2018
20180108    6   2   4   1/8/2018    1/6/2018
20180109    6   2   4   1/9/2018    1/6/2018
20180110    6   2   4   1/10/2018   1/6/2018

Выходная таблица:

DateKey  |Key1|Key2|Key3|DateCreatedCount   |DateUpdatedCount
20180101    1   1   3       1                    0
20180102    1   1   3       1                    0
20180103    1   1   3       1                    0
20180104    1   1   3       1                    0
20180105    1   1   3       1                    5
20180106    6   2   4       1                    5
20180107    6   2   4       1                    0
20180108    6   2   4       1                    0
20180109    6   2   4       1                    0
20180110    6   2   4       1                    0

Заранее спасибо заваша помощь ..

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