2014-01-21 101 views
1

我想知道是否有人能夠幫助我處理我正在處理的DB2查詢?從查詢返回空行

我基本上試圖在Control Number上的兩個表DB2CustNOTIFICATION_REQUE之間做左外連接。

我想返回DB2Cust中的所有行,但是,在NOTIFICATION_REQUE我想選擇最大Notice_DT並僅返回該記錄。

下面的查詢是我到目前爲止。

它很接近,但它不會返回DB2Cust中不存在的控制號碼NOTIFICATION_REQUE

SELECT 
    C.CONTROL_NO, 
    NR.CONTROL_NBR, 
    COALESCE(C.LNAME,'') AS LNAME, 
    COALESCE(C.FNAME,'') AS FNAME, 
    COALESCE(CAST(NR.NOTICE_DT AS VARCHAR(10)), '') AS NOTICE_DT 
FROM WITC00DS.DB2CUST C 
LEFT OUTER JOIN WITC00DS.NOTIFICATION_REQUE NR 
      ON C.CONTROL_NO = NR.CONTROL_NBR 
     AND C.AGENT_CODE = 'HR' AND C.STW_DATE BETWEEN '01/01/2000' AND '01/17/2014' 
WHERE NR.NOTICE_DT = (SELECT MAX(NOTICE_DT) 
         FROM WITC00DS.NOTIFICATION_REQUE ZZ 
         WHERE ZZ.CONTROL_NBR = C.CONTROL_NO) 

回答

0

這裏有兩種選擇。您可以將子查詢移到on條款:

SELECT C.CONTROL_NO, NR.CONTROL_NBR, COALESCE(C.LNAME,'') AS LNAME, COALESCE(C.FNAME,'') AS FNAME, 
     COALESCE(CAST(NR.NOTICE_DT AS VARCHAR(10)), '') AS NOTICE_DT 
FROM WITC00DS.DB2CUST C LEFT OUTER JOIN 
    WITC00DS.NOTIFICATION_REQUE NR 
    ON C.CONTROL_NO = NR.CONTROL_NBR AND 
     C.AGENT_CODE = 'HR' AND 
     C.STW_DATE BETWEEN '01/01/2000' AND '01/17/2014' AND 
     NR.NOTICE_DT = (SELECT MAX(NOTICE_DT) 
         FROM WITC00DS.NOTIFICATION_REQUE ZZ 
         WHERE ZZ.CONTROL_NBR = C.CONTROL_NO 
         ) 

或者你可以明確的'WHERE子句中檢查NULL

SELECT C.CONTROL_NO, NR.CONTROL_NBR, COALESCE(C.LNAME,'') AS LNAME, COALESCE(C.FNAME,'') AS FNAME, 
     COALESCE(CAST(NR.NOTICE_DT AS VARCHAR(10)), '') AS NOTICE_DT 
FROM WITC00DS.DB2CUST C LEFT OUTER JOIN 
    WITC00DS.NOTIFICATION_REQUE NR 
    ON C.CONTROL_NO = NR.CONTROL_NBR AND 
     C.AGENT_CODE = 'HR' AND 
     C.STW_DATE BETWEEN '01/01/2000' AND '01/17/2014' AND 
WHERE NR.NOTICE_DT is null or 
     NR.NOTICE_DT = (SELECT MAX(NOTICE_DT) 
         FROM WITC00DS.NOTIFICATION_REQUE ZZ 
         WHERE ZZ.CONTROL_NBR = C.CONTROL_NO 
        ); 
+0

戈登您好,感謝您的幫助......然而,當我嘗試上面的第一個解決方案我得到「與JOIN操作符關聯的ON子句或MERGE語句無效SQLSTATE = 42972」。 – user2997454

+0

@ user2997454。 。 。看起來,DB2不支持該語法(儘管其他數據庫可以)。無論如何,我更喜歡第二個版本。 –