Я создаю запрос через SSMS, работаю на SQL Server 2012.
Часть моего запроса - найти руководителя для сотрудников. Моя проблема в том, что для таблицы, содержащей имена супервизоров, она не создает новую ежедневную запись. Поскольку для этого дня нет записей, мой запрос отображается как NULL для супервизора.
Как заполнить эти значения NULL последним супервизором, о котором они сообщили в таблице?
Таблица супервизора
MeasureDate Associate Supervisor
2019-09-02 Goodman, Michelle Moody, Robin
2019-09-01 Goodman, Michelle Moody, Robin
2019-08-20 Goodman, Michelle Henry, Jack
2019-08-19 Goodman, Michelle Henry, Jack
Текущий вывод запроса
Date Supervisor Associate
2019-09-01 Moody, Robin Goodman, Michelle
2019-08-21 NULL Goodman, Michelle
2019-08-20 Henry, Jack Goodman, Michelle
Улучшенный вывод запроса
Date Supervisor Associate
2019-09-01 Moody, Robin Goodman, Michelle
2019-08-21 Henry, Jack Goodman, Michelle
2019-08-20 Henry, Jack Goodman, Michelle
Текущий запрос
SELECT
z.Date,
z.Supervisor,
z.Associate,
CAST('XXX' AS char) AS [Group],
z.Task,
Sum(z.Minutes) as Minutes,
Sum(z.Count) as Cases
FROM
(
SELECT
a.DS_LOAD_DT AS Date,
c.CASE_TASK_TYPE_NM AS Task,
b.AssociateName AS Associate,
d.Supervisor,
(CONVERT(decimal,a.DURATIONSEC)/60) AS Minutes,
COUNT(*) AS Count
FROM DW_RawData_XXXDetail a
LEFT JOIN DW_Dim_AssociateMapping b ON a.XXX_EMP_ID = b.XXX_ID AND a.DS_LOAD_DT = b.ScheduleDate
LEFT JOIN DW_Dim_XXX_Case_Types c ON left(a.MSG_TYPE_CD, patindex('%[0-9][^0-9]%', a.MSG_TYPE_CD)) =
c.CASE_TASK_TYPE_ID
LEFT JOIN OperationScoreCard_Daily_Associates d ON b.AssociateName = d.Associate AND b.ScheduleDate =
d.MeasureDate
WHERE b.MUID = '400'
AND a.DS_LOAD_DT >= '2019-08-01'
GROUP BY
a.DS_LOAD_DT,
c.CASE_TASK_TYPE_NM,
b.AssociateName,
d.Supervisor,
(CONVERT(decimal,a.DURATIONSEC)/60)
) z
GROUP BY
z.Date,
z.Task,
z.Associate,
z.Supervisor