2017-07-16 243 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