RollingPig
自我介绍
切换风格
订阅我的Blog
博客日历
文章归档...
最新发表...
博客统计...
网站链接...
资源
===========================================================
巧解 寻找连续号码的不连续值(断号) 问题
===========================================================

Question:

table T,列:serial_no
我想能够查询一下serial_no这个字段的不连续的值。
例如:
serial_no
1
2
3
4
6
8
9
10
我想一个sql语句查出来缺失的号码,
显示结果为:
5
7

解决方法:

代码:




SELECT
/*+ordered */T2.serial_no + 1, MIN (t3.serial_no) - 1

FROM T T1
, T T2,
T t3

WHERE T1
.serial_no(+) = (T2.serial_no + 1) AND T1.
serial_no IS NULLAND t3.serial_no > T2.serial_no

GROUP BY T2
.
serial_no






解决思路:

1。用not exists /not in ,条件 : t1.serial_no = t2.serial_no + 1

2。参考http://www.itpub.net/406784.html , 将not exists /not in 改为outer join + is null 格式

3。加上 min 条件,确定上下限

有空再列出详细步骤


rollingpig 发表于:2005.10.13 00:00 ::分类: ( My Oracle Article ) ::阅读:(741次) :: Permanent link :: 引用 (0)