2013-04-29 1 views
0

광고에서 마지막으로 보급 된 날짜를 선택하고 임대되지 않은 속성 및 마지막으로 보급 된 날짜를 얻기 위해 임대중인 null 값과 비교해야합니다. 이것은 내가 지금까지 가지고있는 코드이다.Oracle SQL을 선택하고 null 값과 비교하여 날짜를 비교하십시오.

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

내가 먼저 unleased 속성을 식별 할 필요가 있다고 생각합니다. 거기에서 최신 광고 날짜를 찾을 수 있습니다. 광고되지 않은 속성이 있다고 가정하면 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; 
관련 문제