如果订单id中有一个跳过,那么它就不会被接收,所以下一个id应该出现在下一行:
i/p table :
1000
1001
1002
1003
1005
1006
1007
1008
1010
1011
1014
1015
etc..
O/p:
1000-1003
1005-1008
1010-1011
1014-1015
如何从查询中获取输出。提前谢谢。
使用row_number()
,将其从值中减去,这样就可以获得连续数据具有相同值的列。使用此列进行分组,然后找到最小值和最大值:
演示
select min(id) ||' - '||max(id) op
from (select id, id - row_number() over (order by id) grp from ip)
group by grp order by grp
如果您的数据包含重复的值,您必须首先将其清除,请使用distinct
。