随笔 - 6  文章 - 129  trackbacks - 0
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(14)

随笔档案(6)

文章分类(467)

文章档案(423)

相册

收藏夹(18)

JAVA

搜索

  •  

积分与排名

  • 积分 - 822229
  • 排名 - 49

最新评论

阅读排行榜

评论排行榜

今天一同事问我以下需求用SQL如何实现
需求:
LWH_TEST表一个SEQ栏位,对应的值(不连续的流水码)
1,
2,
4,
6,
8
.
.
.

以下SQL可查出缺失的流水号:3,5,7...

select b.SEQ - a.SEQ, b.SEQ, a.SEQ from
( select SEQ , ROWNUM RN from (select SEQ from LWH_TEST order by SEQ) ) a,
( select SEQ , ROWNUM RN from (select SEQ from LWH_TEST order by SEQ) ) b
where a.RN+1 = b.RN
and b.SEQ - a.SEQ > 1


感觉还可以



posted on 2011-02-23 15:55 Ke 阅读(585) 评论(3)  编辑  收藏 所属分类: oracle

FeedBack:
# re: 查出不连续,中断的流水码 2011-02-23 16:09 劉文彬
這條SQL, 我已經見識過了, 非常厲害, 以后肯定會有機會用到, 我頂啊~  回复  更多评论
  
# re: 查出不连续,中断的流水码[未登录] 2011-08-30 02:17 cc
为什么查不出来??  回复  更多评论
  
# re: 查出不连续,中断的流水码 2012-11-01 11:01 wenbinliu
查詢的方式為1-4 7-9 13- 17
-------------查詢不連續的流水碼---------------------

SELECT MIN (b.seq) Start_HM, MAX (b.seq) End_HM
FROM (SELECT a.*, TO_NUMBER (a.seq - ROWNUM) cc
FROM (SELECT *
FROM LWH_TEST
ORDER BY seq) a) b GROUP BY b.cc
示例:
SELECT MIN (b. csn) start_hm, MAX (b.csn) end_hm
FROM (SELECT a.*, TO_NUMBER (a.customer_sn - ROWNUM) cc
FROM (SELECT substr(customer_sn,-8) customer_sn,customer_sn csn
FROM g_sn_status where WORK_ORDER ='24020680-1.1-001-P'
ORDER BY customer_sn) a) b
GROUP BY b.cc   回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: