我的应用程序将单行数据分割成不同的行块,这些块总是按照startdate的排序顺序排列。合并sql行组
其中rowpart = 0是开始,rowpart = 2总是结束 rowpart = 1是中间部分,可以重复n次。
我需要在这样的形式返回行像rowpart = 0的开始日期和rowpart = 2的结束日期(如果存在的话,否则返回rowpart结束日期)
- Rowpart = 0是新行块的开始
- Rowpart = 2总是大块
结块可以在不同的日期被传播的端部。
+-----+-------------------------+-------------------------+----------+
| Id | startdate | enddate | rowpart |
+-----+-------------------------+-------------------------+----------+
| 100 | 2016-11-30 00:00:00.000 | 2016-11-30 01:00:00.000 | 0 |
| 100 | 2016-11-30 02:00:00.000 | 2016-11-30 03:00:00.000 | 1 |
| 100 | 2016-11-30 10:00:00.000 | 2016-12-01 00:00:00.000 | 0 |
| 100 | 2016-12-01 02:00:00.000 | 2016-12-01 02:30:00.000 | 1 |
| 100 | 2016-12-01 10:00:00.000 | 2016-12-01 10:30:00.000 | 1 |
| 100 | 2016-12-01 16:00:00.000 | 2016-12-01 16:30:00.000 | 2 |
| 101 | 2016-12-11 10:00:00.000 | 2016-12-11 10:30:00.000 | 0 |
+-----+-------------------------+-------------------------+----------+
所以上面的表格应返回:
+-----+-------------------------+-------------------------+
| Id | startdate | enddate |
+-----+-------------------------+-------------------------+
| 100 | 2016-11-30 00:00:00.000 | 2016-11-30 03:00:00.000 |
| 100 | 2016-12-30 10:00:00.000 | 2016-12-01 16:30:00.000 |
| 101 | 2016-12-11 10:00:00.000 | 2016-12-11 10:30:00.000 |
+-----+-------------------------+-------------------------+
任何帮助,将不胜感激
根据SO你应该回答一些问题你问的问题..如果它可以帮助你的任何答案..do upvote ..happy编码 – mohan111
我没有回复下面发布的答案,我仍然试图解决这个。 –
哪个版本的SQL Server? – MatBailie