我正在使用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