Oracle SQL,选择日期并与空值进行比较

Oracle SQL,选择日期并与空值进行比较,sql,database,oracle,Sql,Database,Oracle,我需要选择并比较广告中的最后一个广告日期,以及租赁中的任何空值,以获取未租赁的财产和最后一次广告的时间。这是我到目前为止的代码 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_LE

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

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,尝试给这个问题一些背景


我认为您需要首先确定未出租的房产。从那里你可以找到最新的广告日期。假设某些属性从未被广告,您将需要通过YR_属性进行左连接以包括未广告的属性

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;