2017-05-24 102 views
0

我需要一些幫助。我在SQL中查詢的目標是使用兩個單獨查詢(結果A + B)的結果計算一段時間內特定車庫中一個變量(汽車)的頻率。將一張表中的所有記錄與另一張表中的所有記錄進行比較

第一組結果(結果A)提供了車庫中各自到達日期和出發日期(每個記錄是一輛車,一個到達日期和一個出口日期)的汽車列表。第二組結果是使用@PeriodStartDate作爲日期和@PeriodEndDate作爲日期的CTE遞歸,提供結果(結果B),包括從開始日期到結束日期的所有日期。

從這裏,我想要做的就是從結果A中獲取每條記錄,並將其與每個結果B的記錄進行比較,從而有效地確定結果B的第一條記錄/日期是否爲1)> =到達日期,和2)<比出境日期。例如。如果從2016-02-04到2016-03-15有一輛車在車庫裏,並且期間開始和結束日期是2016-01-01到2016-03-01,我想取這輛車的記錄,並且比較其到達日期和退出日期到2016-01-01到2016-03-01的所有日期,然後對結果A中的每個車輛/記錄重複該過程。

完成此練習後,我想要在2016-01-01至2016-03-01之間查詢出現在車庫中的汽車數量。

到目前爲止,A和B的結果查詢已完成,但我真的不知道如何開始下一部分。

謝謝 米奇

+1

您正在使用哪個[DBMS](https://en.wikipedia.org/wiki/DBMS)? Postgres的?甲骨文? –

+0

編輯你的問題,並提供(簡化)數據,解釋你想完成什麼。另外,使用您正在使用的數據庫標記。 –

回答

0
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 

這將返回的汽車,結束期到來之前和退出總數的時期開始

後,你可以改變

AND A.Exit > PeriodStart 

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

要捕獲最後一段時間還沒有退出的汽車

+1

嘿。非常感謝您的快速回復。我把你提供的作爲我的查詢(現在有效)的基礎。我和你一樣,並添加了一個WHERE子句(WHERE「來自結果B的日期」> =到達日期+變量AND「來自結果B的日期」<退出日期)並將A加入B. – MikeyC

+0

@MikeyC感謝您的反饋,很高興它有幫助 – MarkD

相關問題