我想從TableB中選擇具有VacationHistory(TableA)表中某個日期範圍之間的開始日期的項目。從表B中的日期與TableA中的多個日期範圍進行比較:Building WHERE語句
假設我有VacationHistory數據表(TableA)具有開始和結束日期值。我需要做的是將來自另一個數據表(TableB)的日期與VacationHistory(TableA)中的日期範圍進行比較。所以,如果在VacationHistory數據表中三個條目,我會做這樣的事情:
SELECT *
FROM TableB WHERE (
(DateInTableB BETWEEN '2014-10-21' AND '2014-10-27')
OR (DateInTableB BETWEEN '2014-11-05' AND '2014-11-13')
OR (...)
)
但是,我怎麼能建立使用VacationHistory表中的所有日期範圍此查詢在此WHERE子句。我想沒有什麼我可以說BETWEEN IN (....)
。
東西,我試過了,是要建立整個的字符串where子句::
DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr + ' OR ' , '') +
('DateInTableB BETWEEN ''' + CAST(StartDate AS NVARCHAR) + ''' AND '
+ '''' + CAST(EndDate AS NVARCHAR) + '''')
FROM VacationHistory
SELECT @listStr
採用具有這樣的事情@listStr
:DateInTableB BETWEEN '2014-11-05' AND '2014-11-13' OR DateInTableB BETWEEN '2014-10-21' AND '2014-10-27'
不過,我不認爲我可以使用@ listStr直接在where子句中,如下所示:
WHERE (@listStr)
我能做些什麼呢?
哇,這是偉大的。這正是我需要的。非常感謝! – 22332112