在 MS SQL 中查找序列中缺失的数字

Las*_*e O 3 sql sql-server

假设我有一个带有整数列 ID 的表。我需要找到具有最大退货金额的missing numbersa 。sequence

  • 如果表是空的并且我要 10,它应该返回数字 1-10。
  • 如果表有 1-5,而我要 10,则它应该返回数字 6,7,8,9,10,11,12,13,14,15。
  • 如果表有 1,2,4,6,9 并且我要求 10,它应该返回数字 3,5,7,8,10,11,12,13,14,15

我怎样才能使用一个查询来实现这一目标MS SQL

提前致谢!

Din*_*hDB 5

尝试这个:

如果您需要获得更多数字,只需增加WHERE Number<=100.

DECLARE @Tab1 TABLE (ID INT)

INSERT INTO @Tab1 VALUES(1)
INSERT INTO @Tab1 VALUES(3)
INSERT INTO @Tab1 VALUES(5)
INSERT INTO @Tab1 VALUES(7)
INSERT INTO @Tab1 VALUES(9)

;WITH CTE AS
(
    SELECT 1 AS Number
    UNION ALL
    SELECT Number + 1 FROM CTE
    WHERE Number<=100
)
SELECT TOP 5 *
FROM CTE
WHERE Number NOT IN(SELECT ID FROM @Tab1)
ORDER BY Number
OPTION (maxrecursion 0);
Run Code Online (Sandbox Code Playgroud)

现有值:

Number
1
3
5
7
9
Run Code Online (Sandbox Code Playgroud)

输出:

Number
2
4
6
8
10
Run Code Online (Sandbox Code Playgroud)

希望这对您有帮助。