【发布时间】:2021-11-20 07:57:23
【问题描述】:
我正在使用 SQL Server 2017 (v14.0)。
我有一张这样的桌子:
Key | State | from | until |
----+----------+------------+------------+
100 | open | 01.01.2021 | 01.01.2021 |
100 | open | 02.01.2021 | 02.01.2021 |
100 | closed | 03.01.2021 | 13.01.2021 |
100 | open | 14.01.2021 | 20.01.2021 |
100 | open | 20.01.2021 | 30.01.2021 |
我想按Key 和State 对其进行分组,但仅限于连续行。
所以我的预期结果是这样的:
Key | State | from | until |
----+----------+------------+------------+
100 | open | 01.01.2021 | 02.01.2021 |
100 | closed | 03.01.2021 | 13.01.2021 |
100 | open | 14.01.2021 | 30.01.2021 |
知道如何做到这一点吗?我有强烈的感觉,这应该可以在ROW_NUMBER 的帮助下以某种方式实现,但我还无法弄清楚......
(在此示例中,可能会出现一些奇怪的 group by calendarweek 或类似的数据,但这不是我的意图)
【问题讨论】:
标签: sql sql-server tsql group-by sql-server-2017