Oracle判断某一ID是否连续

weixin_38608720 2018-12-18 09:03:06
有如下数据:
ID 顺序 新增列
1812300146 20 2
1812300146 19 2
1812300256 18 2
1812300256 17 2
1812300146 16 1
1812300146 15 1
1812300257 14 1
1812300257 13 1
1812300257 12 1
1812300258 11 2
1812300258 10 2
1812300121 9 2
1812300258 8 1
1812300258 7 1
1812300256 6 1
1812300256 5 1
1812300121 4 1
1812300121 3 1
1812300121 2 1
1812300121 1 1
判断某一ID是否是连续的,如果是连续的,则对应的新增列为同一数值,若出现断层,从新出现该ID,则将新增列+1,如1~4是1812300121 ,新增列为1,到9又出现1812300121,则新增列为2,这样要如何判断?请指教!
...全文
447 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
nayi_224 2018-12-19
  • 打赏
  • 举报
回复
with tab as (
select 1 id, 1 ord from dual union all
select 1 id, 2 ord from dual union all
select 2 id, 3 ord from dual union all
select 2 id, 4 ord from dual union all
select 1 id, 5 ord from dual union all
select 1 id, 6 ord from dual union all
select 3 id, 7 ord from dual union all
select 1 id, 8 ord from dual union all
select 3 id, 9 ord from dual 
)
,tab2 as (
select t1.*,
       decode(lag(t1.id) over(order by t1.ord), t1.id, 0, 1) lg
  from tab t1
)
select t1.id,
       t1.ord,
       sum(t1.lg) over(partition by t1.id order by t1.ord) new_col
  from tab2 t1 
 order by t1.ord
;

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧