暂无图片
请教大家个sql问题,如图表按照时间从小到大排序,如何去除相邻记录某个字段内容重复的记录。只保留第一次出现。(图打叉的就是需要删除的记录),最终想要的结果就是按照时间排序,"状态"列的内容为 通-断-通-断-通-断。
我来答
分享
快go💨
2021-07-27
请教大家个sql问题,如图表按照时间从小到大排序,如何去除相邻记录某个字段内容重复的记录。只保留第一次出现。(图打叉的就是需要删除的记录),最终想要的结果就是按照时间排序,"状态"列的内容为 通-断-通-断-通-断。

请教大家个sql问题,如图表按照时间从小到大排序,如何去除相邻记录某个字段内容重复的记录。只保留第一次出现。(图打叉的就是需要删除的记录),最终想要的结果就是按照时间排序,"状态"列的内容为 通-断-通-断-通-断。
2.png

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
Liuxu

用分析函数试试,比如把通和断decode成0,1,然后用lag函数比较此行与上一行的差,最后排除掉为0的(也就是相邻行通断状态相同的)。

暂无图片 评论
暂无图片 有用 0
不是小熊

select * from
(select type,sample_time,status,de,de-lag(de,1,0) over (order by type,sample_time) as diff from
(select type,sample_time,status,decode(status,‘通’,1,‘断’,2) as de
from test
order by type,sample_time) )
where diff<>0;

参考一下

暂无图片 评论
暂无图片 有用 1
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏