【发布时间】:2019-07-09 14:19:57
【问题描述】:
我有一个这样的历史表:
+------------------+------------------+---------+-------+
| valid_from | valid_to | Profit | ID |
+------------------+------------------+---------+-------+
| 20.05.2019 00:02 | 22.05.2019 23:42 | 10 | 12345 |
| 22.05.2019 23:42 | 28.05.2019 13:11 | 10 | 12345 |
| 28.05.2019 13:11 | 28.05.2019 23:59 | 10 | 12345 |
| 28.05.2019 23:59 | 29.05.2019 06:48 | 123 | 12345 |
| 29.05.2019 06:48 | 29.05.2019 13:21 | 123 | 12345 |
| 29.05.2019 13:21 | 29.05.2019 23:59 | 123 | 12345 |
| 29.05.2019 23:59 | 30.05.2019 06:39 | 10 | 12345 |
| 30.05.2019 06:39 | 30.05.2019 12:37 | 123 | 12345 |
| 30.05.2019 12:37 | 31.05.2019 00:09 | 123 | 12345 |
| 31.05.2019 00:09 | 31.05.2019 08:41 | 145 | 12345 |
| 31.05.2019 08:41 | 01.06.2019 00:22 | 145 | 12345 |
+------------------+------------------+---------+-------+
我删除了一些列。现在可以总结第 1、2 和 3 行了。
起初我尝试了以下 GROUP-BY 语句:
SELECT MIN(valid_from ) AS valid_from
,MAX(valid_to ) AS valid_to
,Profit
,ID
INTO [repaired_archiv]
FROM temp.[wrong_archiv]
GROUP BY Profit
,ID
结果是:
+------------------+------------------+---------+-------+
| valid_from | valid_to | Profit | ID |
+------------------+------------------+---------+-------+
| 20.05.2019 00:02 | 30.05.2019 06:39 | 10 | 12345 |
| 28.05.2019 23:59 | 31.05.2019 00:09 | 123 | 12345 |
| 31.05.2019 00:09 | 01.06.2019 00:22 | 145 | 12345 |
+------------------+------------------+---------+-------+
但如您所见,第一行中的 valid_to 列是错误的。原因是错误的 GROUP-BY 语句。我不知道如何获得这样的方面结果:
+------------------+------------------+---------+-------+
| valid_from | valid_to | Profit | ID |
+------------------+------------------+---------+-------+
| 20.05.2019 00:02 | 28.05.2019 23:59 | 10 | 12345 |
| 28.05.2019 23:59 | 29.05.2019 23:59 | 123 | 12345 |
| 29.05.2019 23:59 | 30.05.2019 06:39 | 10 | 12345 |
| 30.05.2019 06:39 | 31.05.2019 00:09 | 123 | 12345 |
| 31.05.2019 00:09 | 01.06.2019 00:22 | 145 | 12345 |
+------------------+------------------+---------+-------+
【问题讨论】:
-
为什么将日期时间值存储为字符串?此处的示例作为日期时间无效。
-
看起来像一个间隙和孤岛问题。 stackoverflow.com/questions/51049303/… 的可能重复项?
标签: sql-server