SQLServer 查询表 Id 或编号的缺失范围(也称为间断)

select istart, iend, iend - istart + 1 as imiss from
(
select ibillid + 1 as istart, (select min(ibillid)
from stCardBill as b
where b.ibillid > a.ibillid
) - 1 as iend
from stCardBill as a
where not exists ( select *
from stCardBill as b
where b.ibillid = a.ibillid + 1 ) and
a.ibillid < (select max(ibillid)
from stCardBill
)
) as w
order by istart

虽然重用被删除键值不是个好主意,但至少可以告诉客户或自己清楚那些编号缺失了。

posted @ 2012-12-08 11:03  资州知府  阅读(2111)  评论(0编辑  收藏  举报