sql - 根据先前值的变化更新标志
问题描述
我有下表。需要 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
解决方案
您可以使用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;
推荐阅读
- nhibernate - 将 NHibernate 与 SAP Advantage 数据库服务器 12 一起使用
- vue.js - 在 Vue 2 中使用属性“路由”
- java - FragmentTransaction add 方法接受了错误的参数
- python - 从 Pandas 的日期范围创建随机排序的日期
- android - 使用 Python3 从设备发送照片并通过 TCP 在 Android 设备上接收照片会在 Android 设备上产生 OOM
- python - 使用 matplotlib 沿图表绘制表格
- php - 将 laravel 项目部署到 Azure 时出现 SQL SSL 错误
- node.js - 如何在 Nodejs 中使用 Twilio API 在会议开始时添加“说”消息
- python - 摄像机不会随 cv2.VideoCapture(0).release() 转动
- java - String 类的 split 方法和每个循环都没有给出所需的输出