我有一个表,它是这样的(pec_za_starenje_prva_start_stop):
| 识别码|记录时间|标签1|
| - -|- -|- -|
| 一个|2022年10月25日21时56分19秒|一个|
| 2个|2022年10月26日04时13分24秒|第0页|
| 三个|2022年10月26日05时42分54秒|一个|
| 四个|2022年10月26日12时18分27秒|第0页|
| 五个|2022年10月26日14时29分36秒|一个|
| 六个|2022年10月26日21时22分21秒|第0页|
id | int
TimeLogged | DateTime
Tag1 | int
“Tag 1”中的数字1应该表示周期已经开始,而0应该表示周期已经结束。因此,我需要如下所示的表:
| 识别码|开始循环|结束循环|总时间|
| - -|- -|- -|- -|
| 一个|2022年10月25日21时56分19秒|2022年10月26日04时13分24秒|377分钟|
| 2个|2022年10月26日05时42分54秒|2022年10月26日12时18分27秒|395分钟|
| 三个|2022年10月26日14时29分36秒|2022年10月26日21时22分21秒|1132分钟|
总时间采用哪种格式并不重要,这只是一个示例。
这是我找到的最接近的东西,但它不能正常工作,因为它只显示开始时间:
SELECT ID,
TimeLogged start_cycle,
next_TimeLogged end_cycle,
TIMEDIFF(next_TimeLogged, TimeLogged) total_time
FROM (
SELECT *, LEAD(TimeLogged) OVER (PARTITION BY ID ORDER BY TimeLogged)
next_TimeLogged
FROM pec_za_starenje_prva_start_stop
) t
WHERE Tag1 = '1'
ORDER BY start_cycle;
1条答案
按热度按时间2skhul331#
https://dbfiddle.uk/NVW9YGb0