在列中查找缺少的数字

时间:2013-03-19 14:55:04

标签: sql sql-server sql-server-2008 tsql

我在T-SQL中有这个专栏:

 1
 2
 3
 7
 10

具有SQl功能,用于检测序列4,5,6和8,9中的缺失数字   我试过了             就像是             如果(a-b> 1)那么我们有一个缺失的数字

与coalesce但我不明白。 感谢任何方向

2 个答案:

答案 0 :(得分:3)

你可以试试这个:

DELCARE @a
SET @a = SELECT MIN(number) FROM table
WHILE (SELECT MAX(number) FROM table ) > @a
BEGIN
IF @a NOT IN ( SELECT number FROM table )
PRINT @a
SET @a=@a+1
END

答案 1 :(得分:1)

以下查询将确定每个序列的起始位置和缺失的数字:

select t.col + 1 as MissingStart, (nextval - col - 1) as MissingSequenceLength
from (select t.col,
             (select min(t.col) from t t2 where t2.col > t.col) as nextval
      from t
     ) t
where nextval - col > 1

这是使用相关子查询来获取表中的下一个值。