SQL 使用滞后函数

SQL using lag function

我想要做的是创建一个具有以下规则的列 'ID_DESLIG':

一个我想要的例子

在此先感谢您的帮助

我想你想要:

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

反过来,这可以简化为:

max(case when state = 'DESLIGADO' then id end) over (order by id)

您可以使用 lag() 来表达这一点,但前提是您知道状态总是交错的。

在标准 SQL(和一些数据库)中,这也可以表示为:

max(id) filter (where state = 'DESLIGADO') over (order by id)