• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

流水号查询?

fxwlei3245 2008-03-11 10:26:29
本人在日常的查帐过程中,遇到一个问题,就是流水号都是系统按顺序自动生成的,但有时候不知道什么原因,中间却出现断号了,那么有没有什么SQL语句直接查到是断了那些号呢?
谢谢,
认识更多的朋友,学习更多的知识
...全文
1219 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
niming520 2008-03-12
create table #t1
(
id int IDENTITY(1,1),
job int
)
create table #t2
(
id int IDENTITY(1,1),
job int
)
declare @a int,@b int,@c int
set @a=1

insert into #t2 select job_id from jobs
set @b=(select max(job) from #t2)
select * from #t2
select @a,@b
while(@a<=@b)
begin
if ((select job from #t2 where job=@a)-(select job from #t2 where job=@a+1)=1)
continue

else
set @c=(select job from #t2 where job=@a)
insert into #t1 (job) values (@c)
if(@a=@b)
break

select @a=@a+1

end

select * from #t1 where job is null
drop table #t1
drop table #t2
回复
dawugui 2008-03-11
[Quote=引用楼主 fxwlei3245 的帖子:]
本人在日常的查帐过程中,遇到一个问题,就是流水号都是系统按顺序自动生成的,但有时候不知道什么原因,中间却出现断号了,那么有没有什么SQL语句直接查到是断了那些号呢?
谢谢,
认识更多的朋友,学习更多的知识
[/Quote]

如果要查所有的断号,必须先从最小到最大生成所有的号码,然后使用 not in 查询所有的号.
回复
dawugui 2008-03-11

断号的开始号
set nocount on
declare @t table(a int,b char(6),flag int)
insert @t select 1,'one',NULL
insert @t select 2,'two',NULL
insert @t select 3,'three',NULL
insert @t select 5,'four',NULL
insert @t select 6,'five',NULL
insert @t select 10,'six',NULL
insert @t select 11,'seven',NULL

select *
from @t aa
where (a - (select max(a) from @t where aa.a > a)) > 1
/*

a b flag
----------- ------ -----------
5 four NULL
10 six NULL
*/
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-11 10:26
社区公告
暂无公告