我有以下腳本。我需要在30天內獲得客戶回來的所有訪問。在腳本中一切正常,但在where子句中有datediff。有人可以幫我修理邏輯嗎?DATEDIFF在WHERE子句中不起作用
select OverallNumber,VisitID,coalesce(CheckInDateTime,ServiceDateTime) as ArrivalDateTime, DepartDateTime
from Visits
where OverallNumber='100'
and DepartDateTime is not null
and coalesce(CheckInDateTime,ServiceDateTime) is not null
--and DATEDIFF(day,MIN(coalesce(CheckInDateTime,ServiceDateTime)), Max(DepartDateTime))<30
order by ArrivalDateTime;
當前數據:
OverallNumber VisitID ArrivalDateTime DepartDateTime
100 1 6/13/2015 6/15/2015
100 2 11/5/2015 11/7/2015
100 3 11/20/2015 11/25/2015
Desired:
OverallNumber VisitID ArrivalDateTime DepartDateTime
100 2 11/5/2015 11/7/2015
100 3 11/20/2015 11/25/2015
在這個例子中的客戶回來了兩次,從2015年11月5日至2015年11月25日。請幫忙。謝謝。
你不能把一個MIN()在WHERE子句。使用CTE,子選擇或派生表。 –
嗨Tab!我明白了,但我稍後會將這個腳本轉移到另一個應用程序,所以我試圖避免使用CTE或任何複雜的東西。我想知道如果我應該做一個日期加載或子查詢。只是無法弄清楚。 –
如果您將腳本轉移到另一個也在使用sql 2012的應用程序,則可以使用延遲功能獲取結果https://msdn.microsoft.com/en-us/library/hh231256.aspx – JamieD77