我不確定這裏的術語,所以讓我舉個例子。我有這個疑問:加入派生表
SELECT * FROM Events
--------------------
Id Name StartPeriodId EndPeriodId
1 MyEvent 34 32
在這裏,PeriodIds指定事件持續多久的,認爲它是另一個表中規定如果那幫助當年周。請注意,EndPeriodId不一定是在StartPeriodId之後的順序。所以,我可以這樣做:
SELECT * FROM Periods WHERE Id = 34
-----------------------------------
Id StartDate EndDate
34 2009-06-01 2009-08-01
請不要糾纏於這種結構,因爲它只是一個例子,而不是如何實際工作。我需要做的是拿出這個結果集:
Id Name PeriodId
1 MyEvent 34
1 MyEvent 33
1 MyEvent 32
換句話說,我需要爲事件存在的每個週期選擇一個事件行。我可以很容易地計算期間信息(32,33,34),但是我的問題在於通過單個查詢將其拉出。
這是在SQL Server 2008中
不完全是,因爲正如我在質詢時說,「請注意,EndPeriodId不一定是StartPeriodId後順序」。這意味着你不能依賴BETWEEN並需要查看期間的實際日期。 – 2009-10-13 18:08:26
看起來我可以使用類似的東西,但我只是在檢查! – 2009-10-13 18:13:11
我愛你馬克西米利安邁爾。 – 2009-10-13 18:28:51