0

我需要选择广告中的最后一个广告日期并将其与租赁中的任何空值进行比较,以获取未租赁财产的时间和最后一次广告的时间。这是我到目前为止的代码;

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

4

1 回答 1

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;
于 2013-04-29T08:58:32.430 回答