【发布时间】:2020-10-13 22:14:16
【问题描述】:
我有这张没有pk的表
| Peo | Pos | DATE_BEGIN | DATE_END | XXXX |
+------+-----+------------+------------+------+
| 9302 | 8 | 2017-10-02 | 2017-12-31 | NULL |
| 9302 | 8 | 2018-01-01 | 2018-01-01 | NULL |
| 9302 | 8 | 2018-01-02 | 2018-05-31 | NULL |
| 9302 | 8 | 2018-06-01 | 9999-12-31 | NULL |
并且我想将 Pos 8 中的时间从较旧的 DATE_BEGIN 传递到较新的 Date_END,如果未定义,则可能是 9999-12-31,在这种情况下将是实际日期。此表为 2017-10-02 至 9999-12-31(2020/06/23,实际日期)。
一个问题是,对于下面的表格,它应该只获得最后一行,因为该人在 Pos 中的总时间是因为它被更改了。所以将是 (2018-06-01) - (9999-12-31 - 实际日期)
| Peo | Pos | DATE_BEGIN | DATE_END | XXXX |
+------+-----+------------+------------+------+
| 9302 | 8 | 2017-10-02 | 2017-12-31 | NULL |
| 9302 | 8 | 2018-01-01 | 2018-01-01 | NULL |
| 9302 | 7 | 2018-01-02 | 2018-05-31 | NULL |
| 9302 | 8 | 2018-06-01 | 9999-12-31 | NULL |
【问题讨论】:
-
"未定义时可能是 9999-12-31" - 所以,有人不知道 NULL 在 SQL 中的含义,现在您必须处理损坏的数据模型?我以为我们在 2000 年就摆脱了它。
标签: sql-server date select where-clause gaps-and-islands