SQL语句集锦:寻找连续号码的断号值
2008-04-30 08:16
197 查看
问题一:
table T,列:serial_no
我想能够查询一下serial_no这个字段的不连续的值。
例如:
serial_no
1
2
3
4
6
8
9
10
我想一个sql语句查出来缺失的号码,
显示结果为:
5
7
解决方法:
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
问题二:
我有一个表结构, fphm,kshm 2014,00000001 2014,00000002 2014,00000003 2014,00000004 2014,00000005 2014,00000007 2014,00000008 2014,00000009 2013,00000120 2013,00000121 2013,00000122 2013,00000124 2013,00000125 (第二个字段内可能是连续的数据,可能存在断点。) 怎样能查询出来这样的结果,查询出连续的记录来。 就像下面的这样? 2014,00000001,00000005 2014,00000009,00000007 2013,00000120,00000122 2013,00000124,00000125
解决办法:
SQL> spool aaa.log SQL> set echo on SQL> select * from t; no rows selected SQL> select * from t; FPHM KSHM ---------- ---------- 2014 1 2014 2 2014 3 2014 4 2014 5 2014 7 2014 8 2014 9 2013 120 2013 121 2013 122 FPHM KSHM ---------- ---------- 2013 124 2013 125 13 rows selected. SQL> @bbb.sql SQL> select b.fphm,min(b.kshm),max(b.kshm) 2 from ( 3 select a.*,to_number(a.kshm-rownum) cc 4 from ( 5 select * from t order by fphm,kshm 6 ) a 7 ) b 8 group by b.fphm,b.cc 9 / FPHM MIN(B.KSHM) MAX(B.KSHM) ---------- ----------- ----------- 2013 120 122 2013 124 125 2014 1 5 2014 7 9
相关文章推荐
- sql常用语句集锦
- 求sql语句 想要输出 姓名相同,身份证号码不同的记录
- 经典SQL语句集锦(收藏版)
- 数据库中如何使用SQL查询连续号码段
- Oracle 精妙SQL语句集锦
- SQL语句:求表A的第20到第30之间的记录(ID可能不连续)
- 经典SQL语句集锦
- MYSQL实现连续签到功能断签一天从头开始(sql语句)
- 数据库SQL操作语句集锦
- 经典SQL语句集锦
- SQL语句集锦
- sql语句集锦
- sql常用语句集锦
- mysql之常用sql语句集锦
- 关于如何用sql语句查询出连续的一串数字
- SQL语句集锦
- sqlserver中去除字符串中连续的分隔符的sql语句
- 经典SQL语句集锦
- Mysql 常用 SQL 语句集锦