2017-07-16 213 views
0

我正在試圖找到所有不屬於租期的租賃。 我的表的結構如下:SQL - 日期範圍落在給定日期範圍之間

單位情況表:

 
Unit Key Start Date End Date Availability 
    1  1/1/2015  6/1/2015  1 
    1  6/2/2015 12/31/2015  0 
    1  1/1/2016 12/31/2016  1 
    2  1/1/2015  6/1/2015  1 
    2  6/2/2015 12/31/2015  0 

租借表:

 
Unit Key Lease Start Lease End 
    1  1/1/2015  6/1/2015 
    1  7/2/2015  8/2/2015 

我期待寫一個邏輯,以確定所有不適用的租約在可用時間內下降。在這種情況下,租賃表中的第二行應該是輸出。

任何形式的幫助或領導將不勝感激。

+0

這裏被認爲是非常粗魯的發佈圖片而不是樣本數據,而不是數據文本。你是新手,所以你可以通過,但是文本可以讓我們更容易地建立一個樣本表來確保我們的答案是好的。 –

+0

謝謝,喬爾,我不知道該怎麼做。但是,感謝您的編輯。我非常感謝你的幫助。 – Ashwin

回答

0

你就不應該使用EXISTS聲明:

SELECT * FROM LEASE L 
WHERE NOT EXISTS (SELECT * FROM AVAILABILITY A 
    WHERE A.UNIT_KEY = L.UNIT_KEY 
    AND A.AVAILABILITY = 1 
    AND A.START_DATE <= L.LEASE_START 
    AND A.END_DATE >= L.LEASE_END); 
0

我猜Availability = 0意味着它是不可用。

select distinct 
    Lease.* 
from 
    Lease 
    join UnitAvailability on 
    Lease.UnitKey = UnitAvailability.UnitKey 
    and Lease.LeaseStart <= UnitAvailability.EndDate 
    and Lease.LeaseEnd >= UnitAvailability.StartDate 
where 
    Availability = 0