SQL问题

下图是查询语句得到的结果,怎么写SQL代码将小于设备状态变化时间的null值变为设备上一个状态,以及大于设备状态变化时间的null值变为设备当前状态

image.png

FineReport PILGRIM 发布于 2024-1-19 15:46
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
1
yzmZQSy29696569Lv4初级互助
发布于2024-1-19 15:52(编辑于 2024-1-22 08:58)

这个设备状态变化时间是只有一个不为空吗

设备状态.rar

  • PILGRIM PILGRIM(提问者) 设备变化时间有很多
    2024-01-19 16:08 
  • PILGRIM PILGRIM(提问者) 单独只有一个的话,case when 语句就能实现,但是这个表里有很多状态变化时间
    2024-01-19 16:10 
  • yzmZQSy29696569 yzmZQSy29696569 回复 PILGRIM(提问者) 那大于第一个变化时间是当前状态,小于第二个变化时间是上一个状态,感觉你这个有冲突啊
    2024-01-19 16:13 
  • PILGRIM PILGRIM(提问者) 回复 yzmZQSy29696569 不冲突,当前变化时间的上一个状态与上一个变化时间的当前状态是一样的,比如06:00:01上一个状态为RUN,当前状态为IDLE,06:00:06上一个状态为IDLE,当前状态为RUN
    2024-01-19 16:42 
  • yzmZQSy29696569 yzmZQSy29696569 回复 PILGRIM(提问者) 哦,什么数据库
    2024-01-19 16:46 
最佳回答
0
梦已元Lv4中级互助
发布于2024-1-22 09:28

用的啥数据库,

最佳回答
0
杨朝健Lv5中级互助
发布于2024-1-22 09:53(编辑于 2024-1-22 09:55)

https://blog.csdn.net/nayi_224/article/details/80324072

oracle 11g可以用lead() ignore nulls over()

最佳回答
0
PILGRIMLv5初级互助
发布于2024-1-23 10:47

使用这个函数可以满足需求:NVL(my_column,   

      LAST_VALUE(my_column) IGNORE NULLS   

      OVER (ORDER BY id ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)) AS new_value 

  • 3关注人数
  • 612浏览人数
  • 最后回答于:2024-1-23 10:47
    请选择关闭问题的原因
    确定 取消
    返回顶部