Как отобразить дату, когда нет значения для этой даты - PullRequest
0 голосов
/ 19 июня 2019

У меня есть главная таблица (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

Матрица работает отдельно от того, что не показывает забронированное время, когда время не посещается сайтом

1 Ответ

0 голосов
/ 19 июня 2019

Вы можете попробовать как часть вашего выбора. Это должно дать вам время на заводское время, но если оно равно нулю, то время, зарезервированное для задачи.

Псевдокод

ISNULL(ClockInPlantTime,BookToTaskTime)

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