我试图基于两个日期比较SQL表中的两列。 设置该表是为了使表A中的每个人都具有另一个表B的外键,每个人可以在表B中具有多个条目。表B中的每个条目都包含开始日期和结束日期,我正尝试抓住每个表B中有重叠的人员,因此其中一个条目的开始日期早于任何其他条目的结束日期。
因此,表A中的John Doe在表B中有两个条目,其中条目1的开始日期是2015年4月5日,结束日期是2016年4月6日,第二个条目是2016年1月10日并且结束于2017年1月10日,所以我想包括我的结果集中的这个人。
但是表A中的Jane Doe作为表B中的两个条目
Entry 1: SD April 10th 2014 End April 10th 2015
Entry 2: SD May 11th 2015 End May 11th 2016
因此,我不想在结果集中包含Jane Doe。
我想我需要在select语句的where部分中使用两个嵌套的for循环,这取决于我是否要包含此人,来回翻转变量。
遵循以下原则
Select * from A
where
(reset variable
for b in
(select * from b.id = A.b_id); loop
for btwo in
(select * from b.id = A.b_id); loop
// set variable based on start / end date
// if I want to include set var = 1 else 0
end loop;
end loop;)
variable = 1;