這裏有很多不同的方法是由於使用窗口函數而可能很受歡迎。
;WITH cte AS (
SELECT
Id
,[Number]
,LAG([Number],1,NULL) OVER (ORDER BY [Number] ASC) AS LagValue
FROM
@Table
)
SELECT
MIN(LagValue) + 1 AS SmallestNumberAfterGap
FROM
cte
WHERE
LagValue <> [Number] - 1
這裏是一個是使用LEFT JOIN
SELECT
MIN(t2.[Number]) + 1 AS SmallestNumberAfterGap
FROM
@Table t1
LEFT JOIN @Table t2
ON t1.Number + 1 = t2.Number
而且因爲我只是在這裏寫更多的代碼,代碼的總體較少是一個使用EXISTS
SELECT
MIN(t1.Number) + 1 AS SmallestNumberAfterGap
FROM
@Table t1
WHERE
NOT EXISTS (SELECT * FROM @Table t2 WHERE t1.Number + 1 = t2.Number)
這裏是一個鏈接顯示全部3個功能運作 http://rextester.com/TIFRI87282
你需要的只是數字或整行嗎? – Serg