gpt4 book ai didi

sql - 检查上一条记录是否与上一条记录匹配的案例

转载 作者:行者123 更新时间:2023-12-04 18:30:35 24 4
gpt4 key购买 nike

我有一个如下所示的查询结果。我希望在查询结果中添加一列,如果与同一 [Machine] 相关的最后一条记录的 [FinishTime] 与当前记录具有相同的 [StartTime],则该列将标记为 1。

例如,在下表中,第 5 行 ([Machine]=RD103) 的标志 = 1,因为它的开始时间与其最后一条记录条目(第 3 行)的开始时间相同。

+---+-------+---------+-------+---------+----------------------+
|OID|Machine|StartTime|EndTime|DelayName|Consecutive Delay Flag|
+---+-------+---------+-------+---------+----------------------+
|1 |RD101 |20:00 |20:20 |A |0 |
+---+-------+---------+-------+---------+----------------------+
|2 |RD102 |21:00 |22:00 |A |0 |
+---+-------+---------+-------+---------+----------------------+
|3 |RD103 |23:00 |23:20 |B |0 |
+---+-------+---------+-------+---------+----------------------+
|4 |RD101 |20:20 |20:45 |C |1 |
+---+-------+---------+-------+---------+----------------------+
|5 |RD103 |23:20 |23:25 |A |1 |
+---+-------+---------+-------+---------+----------------------+

最佳答案

这是分析函数作用的一个很好的例子 - 它们不会强制您对结果进行分组(换句话说 - 它们仍然每行产生一个结果),但您可以拥有与其他行相关的值。

在您的情况下,LAG 函数应该可以解决问题:

SELECT oid, machine, starttime, endtime, delayname, 
CASE WHEN starttime =
LAG (starttime) OVER (PARTITION BY machine ORDER BY starttime)
THEN 1
ELSE 0
END AS flag
FROM my_table

关于sql - 检查上一条记录是否与上一条记录匹配的案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21120395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com