我正在使用SQL Server 2008,並且需要創建一個查詢來顯示日期範圍內的行。對日期範圍的行進行分組
我的表如下:
ADM_ID WH_PID WH_IN_DATETIME WH_OUT_DATETIME
我的規則是:
- 如果WH_OUT_DATETIME是上或24小時另一個ADM_ID的WH_IN_DATETIME的內具有相同WH_P_ID
如果可能的話,我希望將另一列添加到結果中,以識別分組的值,如EP_ID
。
例如
ADM_ID WH_PID EP_ID EP_IN_DATETIME EP_OUT_DATETIME WH_IN_DATETIME WH_OUT_DATETIME
------ ------ ----- ------------------- ------------------- ------------------- -------------------
1 9 1 2014-10-12 00:00:00 2014-10-17 15:00:00 2014-10-12 00:00:00 2014-10-13 15:00:00
2 9 1 2014-10-12 00:00:00 2014-10-17 15:00:00 2014-10-14 14:00:00 2014-10-15 15:00:00
3 9 1 2014-10-12 00:00:00 2014-10-17 15:00:00 2014-10-16 14:00:00 2014-10-17 15:00:00
4 9 2 2014-11-20 00:00:00 2014-11-20 00:00:00 2014-10-16 14:00:00 2014-11-21 00:00:00
5 5 1 2014-10-17 00:00:00 2014-10-18 00:00:00 2014-10-17 00:00:00 2014-10-18 00:00:00
的EP_OUT_DATETIME永遠是組中的最後日期:
ADM_ID WH_PID WH_IN_DATETIME WH_OUT_DATETIME
------ ------ -------------- ---------------
1 9 2014-10-12 00:00:00 2014-10-13 15:00:00
2 9 2014-10-14 14:00:00 2014-10-15 15:00:00
3 9 2014-10-16 14:00:00 2014-10-17 15:00:00
4 9 2014-11-20 00:00:00 2014-11-21 00:00:00
5 5 2014-10-17 00:00:00 2014-10-18 00:00:00
會和返回行。希望澄清一點。 這樣,我可以按EP_ID進行分組,並找到EP_OUT_DATETIME和任何ADM_ID/PID的啓動時間。
每個人都應該滾入下一個,也就是說,如果另一列具有如下的另一對同一WH_PID的WH_OUT_DATETIME,比該行的WH_OUT_DATETIME成爲所有的WH_PID的是EP_ID內EP_OUT_DATETIME的WH_IN_DATETIME。
我希望這是有道理的。
感謝, MR
完整結構&查詢只是出於好奇,有多少行是該表? – 2014-12-03 14:18:34
@steven您能否提供一些反饋意見,以瞭解我的答案(或其中的任何/全部)中沒有完全符合您的要求的情況,以致賞金未被授予(過期並因此被自動授予50 %)。據我可以從其他答案的問題和評論中知道,至少我的答案,即使不是1或2個答案,也輸出了期望的結果。我在問,因爲200點的賞金表明這個問題對你來說很重要,但對我,迪帕克或斯科特提出的答案沒有反饋意見。 – 2014-12-03 14:27:54