1

我的代码似乎忽略了我找不到 HR.NAME 的条目。如何在“SENT BY”字段中显示“Not Found”?另外,如果它没有找到 HR.NAME,请包含该数据。

SELECT DISTINCT MA.MOPID "MOP #"
   ,MA.MOPNOTIFICATIONSENT "Sent Status"
   ,MA.MOPNOTIFICATIONSENTBY "Employee ID"
   ,MA.MOPNOTIFICATIONSENDAT  "Date Sent"
   ,HR.NAME "SENT BY"

FROM MOPUSER.MOPACTIVITY MA ,HR@SECADMIN HR
WHERE TO_CHAR(MOPNOTIFICATIONSENDAT, 'YYYY-MM-DD') BETWEEN TO_CHAR(SYSDATE, 'YYYY-MM-DD') AND TO_CHAR(SYSDATE, 'YYYY-MM-DD')
AND HR.EMPID = SUBSTR(MA.MOPNOTIFICATIONSENTBY, 2, (LENGTH(MA.MOPNOTIFICATIONSENTBY) - 1))
4

1 回答 1

1

尝试使用COALESCE功能left join

SELECT DISTINCT MA.MOPID "MOP #"
   ,MA.MOPNOTIFICATIONSENT "Sent Status"
   ,MA.MOPNOTIFICATIONSENTBY "Employee ID"
   ,MA.MOPNOTIFICATIONSENDAT  "Date Sent"
   ,COALESCE(HR.NAME,'Not found') as "SENT BY"

FROM MOPUSER.MOPACTIVITY MA 
left join HR@SECADMIN HR on HR.EMPID = SUBSTR(MA.MOPNOTIFICATIONSENTBY, 2, (LENGTH(MA.MOPNOTIFICATIONSENTBY) - 1))
WHERE TO_CHAR(MOPNOTIFICATIONSENDAT, 'YYYY-MM-DD') BETWEEN TO_CHAR(SYSDATE, 'YYYY-MM-DD') AND TO_CHAR(SYSDATE, 'YYYY-MM-DD')
于 2013-07-26T20:22:13.887 回答