【发布时间】:2017-02-21 10:39:33
【问题描述】:
我有一个问题,我需要比较几行的日期。要求是数据需要按 'Region/Area' 组合以最低的 'StartDate' 和最高的 'EndDate' 分组,除非前一个 'EndDate' 和下一个 'StartDate' 之间的间隔超过 1 天。
“StartDate”始终是该月的第一天,“EndDate”始终是该月的最后一天。
给定一个这样的简化表:
Region | Area | StartDate | EndDate
-------|------|---------------|-------------
A | 1 | 01/01/2016 | 03/31/2016
A | 1 | 04/01/2016 | 05/31/2016
A | 1 | 07/01/2016 | 09/30/2016
A | 1 | 10/01/2016 | 01/31/2017
A | 1 | 02/01/2017 | 12/31/2017
B | 2 | 01/01/2016 | 04/30/2016
B | 2 | 05/01/2016 | 09/30/2016
A | 4 | 01/01/2016 | 05/31/2016
A | 4 | 06/01/2016 | 12/31/2016
我需要结果看起来像这样:
Region | Area | StartDate | EndDate
-------|------|--------------|-----------
A | 1 | 01/01/2016 | 05/31/2016
A | 1 | 07/01/2016 | 12/31/2017
B | 2 | 01/01/2016 | 09/30/2016
A | 4 | 01/01/2016 | 12/31/2016
我已尝试使用 MIN 和 MAX 日期进行 GROUP BY,但我似乎无法正确理解它的逻辑。
任何想法或建议将不胜感激。
【问题讨论】:
标签: sql sql-server