0

広告で最後に宣伝された日付を選択して、リースの 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.griffy.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 に答える