将一个 table 的所有记录与另一个 table 的所有记录进行比较

Compare all records from one table to all records from another table

我需要一些帮助。我在 SQL 中查询的目标是使用来自两个单独查询的结果(结果 A + B)计算一个变量(汽车)在一段时间内在特定车库中的频率。

第一组结果(结果 A)提供了车库中汽车的列表及其各自的到达日期和离开日期(每条记录是一辆车、一个到达日期和一个离开日期)。第二组结果是 CTE 递归,使用 @PeriodStartDate 作为日期,使用 @PeriodEndDate 作为日期,提供包含从开始日期到结束日期的所有日期的结果(结果 B)。

从这里开始,我要做的是从结果 A 中取出每条记录,并将其与结果 B 的每条记录进行比较,有效地确定结果 B 的第一个 record/date 是否为 1) >= to到达日期,以及 2) < 离开日期。例如。如果一辆车在 2016-02-04 到 2016-03-15 期间在车库里,并且期间开始和结束日期是 2016-01-01 到 2016-03-01,我想记录这辆车,并且将其到达和离开日期与 2016-01-01 到 2016-03-01 的所有日期进行比较,然后对结果 A 中的每个 car/record 重复该过程。

完成此练习后,我希望查询生成从 2016 年 1 月 1 日到 2016 年 3 月 1 日期间车库中的汽车数量。

到目前为止,对 A 和 B 的结果的查询已经完成,但老实说,我不知道如何开始下一部分。

谢谢, 米奇

Select Count(*) AS TotalCars, B.PeriodStart, B.PeriodEnd
FROM A
JOIN B
ON A.Arrival <= B.PeriodEnd 
AND A.Exit > B.PeriodStart
Group By B.PeriodStart, B.PeriodEnd

这将 return 期间结束前到达并在期间开始后离开的汽车总数

你可以改变

AND A.Exit > PeriodStart

  ISNULL(A.Exit, Getdate()) > PeriodStart

捕获上一期还未出站的车