SQL Server Note

最小の空き番号を取得

数値型の値の中から、最小の空き番号を取得します。

SELECT ID
FROM CUSTOMER
ID
1
2
3
5
7
SELECT ISNULL((
SELECT MIN(Cnt)
FROM (
SELECT a.ID,
(SELECT COUNT(*)
FROM CUSTOMER b WHERE b.ID <= a.ID) AS Cnt
FROM CUSTOMER a
) c
WHERE ID <> Cnt
),(SELECT ISNULL(MAX(ID) + 1,1) FROM CUSTOMER))
AS [BLANKID]
BLANKID
4

ただし、データが増加するほど、すごく重い処理になるため注意して下さい。

Copyright © 2006 Hikijishi All Rights Reserved.
[] [sql][0.00255894660949707]