Я знаю, что это поздний ответ, но вот запрос, который использует рекурсивные выражения таблицы, чтобы получить недостающие значения между минимальным и максимальным значениями в таблице:
WITH CTE AS
(
--This is called once to get the minimum and maximum values
SELECT nMin = MIN(t.ID), MAX(t.ID) as 'nMax'
FROM Test t
UNION ALL
--This is called multiple times until the condition is met
SELECT nMin + 1, nMax
FROM CTE
WHERE nMin < nMax
)
--Retrieves all the missing values in the table.
SELECT c.nMin
FROM CTE c
WHERE NOT EXISTS
(
SELECT ID
FROM Test
WHERE c.nMin = ID
)
Это был протестирован со следующим схема:
CREATE TABLE Test
(
ID int NOT NULL
)
INSERT INTO Test
Values(1)
INSERT INTO Test
Values(2)
INSERT INTO Test
Values(3)
INSERT INTO Test
Values(7)
INSERT INTO Test
Values(10)
это поможет, если вы выложили функцию ... –
Если у вас есть такой fucntion, каков ваш вопрос? –
@GordonLinoff «имеет SQL-функцию ...», вероятно, означает «Имеет ли SQL функцию ...?»? хотя, конечно, это всего лишь образованное предположение. – Pondlife