首页 > 解决方案 > 根据先前值的变化更新标志

问题描述

我有下表。需要 sql,如果 INPUT 值发生变化,则将 FLAG 更新为 1,否则为 0。

INPUT   START_DATE  PERSON_ID  FLAG
42707   2017-01-01  227317      0
40000   2018-01-01  227317      1
42400   2019-01-01  227317      1
42400   2019-01-02  227317      0 

标签: sqlsql-server

解决方案


您可以使用lag()

select t.*, 
       (case when lag(input, 1, input) over (partition by person_id order by start_date) = input
             then 0 else 1 
        end) as FLAG
from table t;

推荐阅读