SQL合并连续日期

时间:2016-06-27 08:47:17

标签: sql sql-server database date

大家可以帮我解决SQL查询问题 我想显示数据库中连续至少有2个日期的所有连续日期。
下面是我希望的输出示例。

这是一个日期列表:

2016-06-24 00:00:00.000
2016-06-24 00:00:00.000
2016-06-24 00:00:00.000
2016-06-25 00:00:00.000
2016-06-25 00:00:00.000
2016-06-26 00:00:00.000
2016-05-26 00:00:00.000
2016-05-25 00:00:00.000
2016-04-04 00:00:00.000
2016-06-26 00:00:00.000

---------- ----------输出

| Start Date              | End Date                | Count | consecutive Date |
| 2016-05-25 00:00:00.000 | 2016-05-25 00:00:00.000 | 1     | 2                |
| 2016-05-25 00:00:00.000 | 2016-05-26 00:00:00.000 | 1     | 2                |
| 2016-06-24 00:00:00.000 | 2016-06-25 00:00:00.000 | 2     | 2                |
| 2016-06-24 00:00:00.000 | 2016-06-26 00:00:00.000 | 2     | 3                |
| 2016-06-25 00:00:00.000 | 2016-06-26 00:00:00.000 | 2     | 2                |

这就是我目前的情况:

WITH t AS (
  SELECT SWITCHOFFSET(CONVERT(DATETIMEOFFSET, dateAvailable), '+08:00') d,
         ROW_NUMBER() OVER(ORDER BY dateAvailable) i
  FROM user_dateTbl
  GROUP BY dateAvailable
)
SELECT MIN(d),MAX(d)
FROM t
GROUP BY DATEDIFF(day,i,d)

请帮助我谢谢。
如果您不确定我写的是什么,请随时在下面的评论中写下来。

0 个答案:

没有答案