У меня есть главная таблица (TMS), в которой хранятся дата и время, когда сотрудник на часах установил на заводе день, и к нему добавлены таблицы с производными данными, одна из которых содержит время, потраченное на работу над задачей. я вижу, сколько времени они потратили на работу над заданием. У меня есть момент, когда пользователь может не смотреть на завод, а записывать время на задание. В моей выходной матрице нет записи о том, что они посещают сайт, и не будет показано время, когда они забронировали задание. Есть ли способ показать каждую дату в таблице TMS независимо от того, заказали ли они?
Я создал новую таблицу, в которой показывались все даты с 01-01-19 по 01-01-25, в надежде, что, когда я присоединился к вышеуказанным таблицам, я получил «ноль» за любую дату, которую мы не регистрировали или не записывали время для выполнения задачи. Когда я присоединяюсь к вышеперечисленным сетам, у меня все еще нет даты, когда синхронизация не происходила.
Кодирование скопировано из поля SQL из SSRS 2017 (я обычно использую панель Grid для своего кодирования, а не набираю SQL):
SELECT DISTINCT
WOL_TMS_INFO.ORG_UNIT, WOL_TMS_INFO.SAP_NO, format(WOL_TMS_INFO.DATE, 'MM') AS MONTH_PARAM, WOL_TMS_INFO.SITE, WOL_TMS_INFO.FIRSTNAME, WOL_TMS_INFO.SURNAME,
YEAR(WOL_TMS_INFO.DATE) AS YEAR, WOL_TMS_INFO.DATE, WOL_TMS_INFO.HOURS_ATT, format(WOL_TMS_INFO.DATE, 'ddd') AS DATE1, WOL_TMS_INFO.PAID_ABSENCES, WOL_TMS_INFO.HOLIDAY,
WOL_TMS_INFO.HOURS_SICK, HOURS_CUST_PAID_CERV_TBL.HOURS_CUST_PAID, ZPEFF_NP_TIME.NP_WORKING_TIME, CASE WHEN WORKING_TIME IS NULL
THEN 0 ELSE WORKING_TIME END AS WORKING_TIME
FROM WOL_TMS_INFO LEFT OUTER JOIN
(SELECT TOP (100) PERCENT PERS_NO, PLNT, POSTG_DATE, SUM(WORKING_TIME + CASE WHEN UNIT = 'MIN' THEN ACTUAL_WORK / 60 ELSE ACTUAL_WORK END) AS WORKING_TIME
FROM WOL_ZPEFF_DETAIL
GROUP BY PERS_NO, PLNT, POSTG_DATE
ORDER BY POSTG_DATE) AS zpeff_derv_tbl_working_time ON WOL_TMS_INFO.DATE = zpeff_derv_tbl_working_time.POSTG_DATE AND WOL_TMS_INFO.SAP_NO = zpeff_derv_tbl_working_time.PERS_NO LEFT OUTER JOIN
(SELECT TOP (100) PERCENT PERS_NO, PLNT, POSTG_DATE, SUM(WORKING_TIME) AS NP_WORKING_TIME
FROM (SELECT TOP (100) PERCENT PERS_NO, PLNT, POSTG_DATE, SUM(WORKING_TIME + ACTUAL_WORK / 60) AS WORKING_TIME, REASON_FOR
FROM WOL_ZPEFF_DETAIL AS WOL_ZPEFF_DETAIL_1
GROUP BY PERS_NO, PLNT, POSTG_DATE, REASON_FOR
HAVING (REASON_FOR IS NOT NULL)
ORDER BY POSTG_DATE) AS ZPEFF_DERV_DERV_TBL
GROUP BY PERS_NO, PLNT, POSTG_DATE
ORDER BY POSTG_DATE) AS ZPEFF_NP_TIME ON WOL_TMS_INFO.SAP_NO = ZPEFF_NP_TIME.PERS_NO AND WOL_TMS_INFO.DATE = ZPEFF_NP_TIME.POSTG_DATE LEFT OUTER JOIN
(SELECT TOP (100) PERCENT SAP_NO, DATE, SUM(HOURS_CUST_PAID) AS HOURS_CUST_PAID
FROM WOL_TMS_INFO AS WOL_TMS_INFO_1
GROUP BY SAP_NO, DATE
ORDER BY DATE) AS HOURS_CUST_PAID_CERV_TBL ON WOL_TMS_INFO.SAP_NO = HOURS_CUST_PAID_CERV_TBL.SAP_NO AND WOL_TMS_INFO.DATE = HOURS_CUST_PAID_CERV_TBL.DATE
WHERE (WOL_TMS_INFO.ORG_UNIT IN (@PROD_TEAM_PARAM)) AND (WOL_TMS_INFO.SAP_NO IN (@SAP_NO)) AND (format(WOL_TMS_INFO.DATE, 'MM') IN (@MONTH_PARAM)) AND (WOL_TMS_INFO.SITE = 'wolverton') AND
(WOL_TMS_INFO.DATE > '01/01/2019')
ORDER BY MONTH_PARAM, WOL_TMS_INFO.SAP_NO
Матрица работает отдельно от того, что не показывает забронированное время, когда время не посещается сайтом