When I execute my code, it spends many hours and it has not been finished. And I know that the problem is using 'or' in left join clause. So I want to know how to rewrite this code that is can be executed.
SELECT WFTD.RELA
, WFTCS.PARENT_TASK AS CONSULT_TASK_ID
, WFTCS.CREATE_DATE AS CONSULT_DATE
, WFTD_THIS_TASK.APPROVED_RESULT_DATE AS THISTASK_APPROVED_RESULT_DATE
FROM TNH_WF WF
INNER JOIN TND_WF_TASK WFT ON WFT.WF_ID = WF.WF_ID AND WFT.OWNER_ATONEMENT IS NOT NULL AND WFT.WORK_TRAY_ID IN ('N02', 'N03', 'N06', 'N07')
INNER JOIN TND_WF_TASK WFTCS ON WFTCS.WF_ID = WFT.WF_ID AND WFTCS.WORK_TRAY_ID = 'N07'
LEFT JOIN TND_WF_TASK_DETAIL WFTD_THIS_TASK ON WFTD_THIS_TASK.WF_TASK_ID = WFT.WF_TASK_ID AND WFTD_THIS_TASK.POL_COV_FLAG = 'P'
LEFT JOIN TND_WF_TASK_DETAIL WFTD
ON (
(
(WFTD.WF_TASK_ID = WFT.PARENT_TASK
AND WFT.WORK_TRAY_ID IN ('N07')
AND WFTD.CONSIDER_RESULT_CODE LIKE '%Consult%')
OR
(WFTD.NEXT_TASK_ID = WFT.WF_TASK_ID
AND WFT.WORK_TRAY_ID IN ('N02', 'N03', 'N06'))
AND
WFT.STATUS IN (0,1,2)
)
OR
(WFTD.WF_TASK_ID = WFT.WF_TASK_ID
AND WFT.STATUS IN (3)))
AND WFTD.POL_COV_FLAG = 'P'