SQL查找过去的事件



我有一个表,其中包含有状态和ID的事件。我想做的是创建符合以下规则的第三列:

  • 如果状态为"LIGADO",则new_column=id
  • 如果状态不是"Ligado",则new_column=该状态为"Ligadon"的前一行的id

这是一张图片,可以更好地解释我要做的事情。

示例

我认为这与您之前的问题基本相同,只是更改了常数值:

select t.*,
(case when state = 'LIGADO' then id
else max(case when state = 'LIGADO' then id end) over (order by id)
end) as desligado_id
from t;