У меня есть таблица фактов, которая выглядит как таблица 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
Заранее спасибо заваша помощь ..