2013-04-29 83 views
0

我需要選擇廣告中的最後一個廣告日期並將其與租用中的任何空值進行比較,以獲取未租賃的屬性以及最後一次公佈的時間。這是我迄今爲止的代碼;Oracle SQL,根據空值選擇並比較日期

SELECT YR_LEASE.PROPERTYNUM, 
     MAX(YR_ADVERT.DATETO), 
count(YR_LEASE.RENTERNUM)  
FROM YR_LEASE 
JOIN YR_ADVERT 
    ON YR_LEASE.PROPERTYNUM=YR_ADVERT.PROPERTYNUM 
GROUP BY YR_LEASE.PROPERTYNUM 

這將返回計數這是太高了,我不知道我做錯了,這裏是我的ERD,試圖給這個問題的一些背景;

http://www.gliffy.com/pubdoc/4239520/L.png

回答

1

我認爲你需要先找出未批租性質。從那裏你可以找到最新的廣告日期。假設某些屬性從未被公佈過,則需要通過YR_PROPERTY並執行左連接以包含未公開的屬性。

SELECT NVL(TO_CHAR(MAX(YR_ADVERT.DATETO),'DD/MM/YYYY'),'NO LAST ADVERT DATE') LAST_ADVERT_DATE 
     ,YR_PROPERTY.PROPERTYNUM  
FROM YR_PROPERTY LEFT JOIN YR_ADVERT ON YR_PROPERTY.PROPERTYNUM = YR_ADVERT.PROPERTYNUM 
WHERE NOT EXISTS (SELECT 1 
        FROM YR_LEASE 
        WHERE YR_LEASE.PROPERTYNUM = YR_PROPERTY.PROPERTYNUM 
        AND YR_LEASE.RENT_FINISH > SYSDATE) 
GROUP BY YR_LEASE.PROPERTYNUM;