【发布时间】:2019-12-30 13:55:36
【问题描述】:
编辑: 我改变了我的例子,让它更简单。第一个引号是源表的样子,第二个引号是结果的样子。
大家好,
我有多个只发送变化状态的停车场。 当汽车到达停车场时它会发送一个“1”,然后在汽车再次离开之前它不会发送任何东西。在那一刻,停车发送一个“0”。我需要在很长一段时间内进行分析,因此看到每小时左右的时间量不会得到太多行(按分钟比较),这将是非常棒的。
数据看起来像这样(根据要求,我将其减少为停车 ID 10,仅是 19.12 的最后一条记录。以及 20.12 的记录。):
+------------+------------------+--------+-------------+
| Parking-ID | DateTime | Status | Comment |
+------------+------------------+--------+-------------+
| 10 | 20.12.2019 16:35 | 0 | Car left |
+------------+------------------+--------+-------------+
| 10 | 20.12.2019 08:22 | 1 | Car arrived |
+------------+------------------+--------+-------------+
| 10 | 19.12.2019 22:47 | 0 | Car left |
+------------+------------------+--------+-------------+
现在为了不让我太容易,在“免费”和“被占用”状态旁边还有一个温暖状态。汽车离开后 1 小时停车应标记为“暖”,因为有些汽车必须在几分钟内快速进出,此时间范围应显示为“暖”。
为了不获取太多行(例如每分钟),如果可以每小时获取摘要,我将不胜感激。对于我的分析,我应该能够看到每天停车的时间、温暖的时间以及免费的时间。
所以结果应该是这样的(对于 Parking-ID 10 和 20.12.2019):
+------------+------------------+--------+----------+---------+
| Parking-ID | DateTime | Status | Duration | Comment |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 23:00 | 0 | 1.00 | Free |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 22:00 | 0 | 1.00 | Free |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 21:00 | 0 | 1.00 | Free |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 20:00 | 0 | 1.00 | Free |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 19:00 | 0 | 1.00 | Free |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 18:00 | 0 | 1.00 | Free |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 17:00 | 0 | 0.42 | Free |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 17:00 | 2 | 0.58 | Warm |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 16:00 | 2 | 0.42 | Warm |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 16:00 | 1 | 0.58 | Taken |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 15:00 | 1 | 1.00 | Taken |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 14:00 | 1 | 1.00 | Taken |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 13:00 | 1 | 1.00 | Taken |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 12:00 | 1 | 1.00 | Taken |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 11:00 | 1 | 1.00 | Taken |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 10:00 | 1 | 1.00 | Taken |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 09:00 | 1 | 1.00 | Taken |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 08:00 | 1 | 0.63 | Taken |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 08:00 | 0 | 0.37 | Free |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 07:00 | 0 | 1.00 | Free |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 06:00 | 0 | 1.00 | Free |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 05:00 | 0 | 1.00 | Free |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 04:00 | 0 | 1.00 | Free |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 03:00 | 0 | 1.00 | Free |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 02:00 | 0 | 1.00 | Free |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 01:00 | 0 | 1.00 | Free |
+------------+------------------+--------+----------+---------+
| 10 | 20.12.2019 00:00 | 0 | 1.00 | Free |
+------------+------------------+--------+----------+---------+
有人有好的方法吗?我已经搜索并尝试过,但找不到可行的方法。
谢谢你和最好的问候
【问题讨论】:
-
IMO,Output is not as per given input.你能否根据给定的输出快速更改输入,以便清楚。 (Parking-ID 10 和 20.12.2019 的输入)
-
你能补充一下预期的结果吗
-
我更改了示例。 @KumarHarsh 20.12 的输入。并输出 20.12。现在应该匹配
-
@KrishnaMuppalla 第二张表是预期的结果。
-
@denzel,请检查我的答案,最重要的是清除疑问,很好。
标签: sql-server tsql