我需要选择并比较广告中的最后一个广告日期,以及租赁时的任何空值,以获取未租赁的房产及上次广告的时间。这是我到目前为止的代码;
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尝试给这个问题一些背景;
答案 0 :(得分: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;