将连续日期的块汇总到开始日期和结束日期

时间:2017-06-20 13:56:28

标签: sql date output grouping date-range

我有一个包含以下条目的数据库(SQL 2014):

Name   Date
John   02/02/2017
John   03/02/2017
John   04/02/2017
John   13/03/2017
John   14/03/2017

这些条目代表缺勤的障碍 - 每次可能只有一天,或几天的障碍(一个区块内可能有一个月的过渡)。

我想总结一下这些数据:

Name   MinDate     MaxDate
John   02/02/2017  04/02/2017
John   13/03/2017  14/03/2017

其中输出包含每个块的第一天和最后一天(连同缺少的天数,这将是直截了当的)。

1 个答案:

答案 0 :(得分:1)

使用YEARMONTH

SELECT
    T.Name,
    MIN(T.Date) MinDate,
    MAX(T.Date) MaxDate
FROM
    Tbl T
GROUP BY
    T.Name,
    YEAR(T.Date),
    MONTH(T.Date)