Oracle中按连续号码分段
需要在oracle中将连续的数字分段
模拟数据:
fphm je
1001 20
1002 30
1003 12
1005 32
1006 33
1007 88
1009 99
1010 11
1011 11
如数据所示,发票号码(fphm)中间有中断,我们需要将其按连续性分段,并汇总其金额(je)
sql:
select fphm,fphm-rownum,je from test_fp order by fphm
执行此语句后,由于rownum是按顺序排列的,所以连续的号码减掉rownum后的差应该是一样的,我们最后就可以使用group by来达到目的了。
sql:
select min(t.fphm),max(t.fphm),sum(t.je) from (select fphm,fphm-rownum as tnum,je from test_fp order by fphm) t group by t.tunm