2013-07-26 26 views
1

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

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 ,[email protected] 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)) 
+0

我注意到,您可以访问使用DBLINK的第一个字段是'HR.Name'所以我的猜测是,无论是场犯规与形同虚设。或者你没有访问权限。你可以访问'HR @ SECADMIN'中的字段吗? –

回答

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 [email protected] 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')