【发布时间】:2020-07-29 14:43:30
【问题描述】:
我有一张表,其名称、位置、开始日期和结束日期如下:
+------+----------+-----------+-----------+-----------+
| name | location | startdate | endate | is_active |
+------+----------+-----------+-----------+-----------+
| A | delhi | 3/26/2019 | 3/26/2019 | 1 |
| A | delhi | 3/27/2019 | 3/27/2019 | 1 |
| A | delhi | 3/28/2019 | 3/28/2019 | 1 |
| A | delhi | 3/31/2019 | 3/31/2019 | 1 |
+------+----------+-----------+-----------+-----------+
需要像这样更新:
+------+----------+-----------+-----------+-----------+
| name | location | startdate | endate | is_active |
+------+----------+-----------+-----------+-----------+
| A | delhi | 3/26/2019 | 3/28/2019 | 1 |
| A | delhi | 3/27/2019 | 3/27/2019 | 0 |
| A | delhi | 3/28/2019 | 3/28/2019 | 0 |
| A | delhi | 3/31/2019 | 3/31/2019 | 1 |
+------+----------+-----------+-----------+-----------+
如果startdate 是连续的,则将结束日期更新为最后一个连续的startdate 的结束日期,同时更新is_active = 0 的连续开始日期
【问题讨论】:
-
请尝试重新格式化您的示例数据,使其更易读。我认为这样会更容易提供帮助。
标签: sql sql-server window-functions gaps-and-islands