Yo creo que podrías sacerlo con algo así; Creo que todo lo que he utilizado existe en todos los motores de SQL (es estandard de SQL).
Tal vez cambie cómo se definen las variables, pero la sintaxis debe ser similar.
Suponiendo que la tabla se llame
TABLA1 y tenga estos valores:
Cita:
ID NOMBRE
--------------
0 Articulo 0
2 Articulo 2
4 Articulo 4
5 Articulo 5
7 Articulo 7
|
Una consulta como esta, debería devolver los valores que no existen en esa tabla en el campo
ID.
Para ello se crea una temporal con todos los posibles, entre el
maximo y
mínimo existente en
TABLA1, y luego se miran los que faltan.
Código SQL
[-]
-- Definimos la tabla con TODOS los valores posibles
DECLARE @tablatmp table (NUMEROS INT);
-- Variables de máximo y mínimo de la TABLA1
declare @max int;
declare @min int;
--Valor máximo de la tabla
set @max = (SELECT MAX(ID) NUMMAX From TABLA1)
--Valor mínimo de la tabla
set @min = (SELECT MIN(ID) NUMMIN From TABLA1)
-- llenar la tabla con los valores desde el mínima al máximo
declare @i int
set @i=@min
while (@i <= @max) begin
set @i = @i + 1
insert into @tablatmp (NUMEROS) VALUES (@i)
end
-- Devolver los valores uqe faltan en el campo ID de la TABLA1
SELECT NUMEROS from @tablatmp WHERE NUMEROS NOT IN (SELECT ID FROM Tabla1)
En la imagen, lo primero es
TABLA1 y lo segundo la consulta anterior ejecutada: