Hola Carlos
Te copio un script que hace lo que necesitas, si mal no recuerdo es de
Mariano
Drop Table Test1
CREATE TABLE Test1
(numero int NOT NULL PRIMARY KEY)
INSERT INTO Test1 VALUES (1)
INSERT INTO Test1 VALUES (2)
INSERT INTO Test1 VALUES (3)
INSERT INTO Test1 VALUES (4)
INSERT INTO Test1 VALUES (7)
INSERT INTO Test1 VALUES (8)
INSERT INTO Test1 VALUES (10)
--1era Opcion me trae el 1er hueco
SELECT Min(C2.numero) + 1 As Libre
FROM test1 C1
RIGHT JOIN test1 C2 ON C1.numero = C2.numero + 1
WHERE C1.numero IS NULL
--2da Opcion me trae el rango de Huecos
Select *
from (select n1.numero + 1 As Desde,
(select min(n2.numero) from test1 n2 where n2.numero > n1.numero ) - 1 As
Hasta
from test1 n1) t
where t.hasta is not null and (hasta - Desde) >= 0
Saludos
PabloC
De: [email protected] [mailto:[email protected]] En nombre de Carlos Adolfo
Codesido
Enviado el: Jueves, 15 de Enero de 2009 11:28
Para: pablo.canonico
Asunto: [dbms] Primer valor disponible en un hueco de registros
Estimados listeros:
Necesito saber si existe una consulta SQL que me permita obtener el primer
hueco disponible que exista en la clave de una tabla. Por ejemplo, una tabla
tiene como clave el campo Codigo y posee los siguiente registros
almacenado en dicho campo: 1, 2, 4, 5, 7, 8.
En este caso la consulta debe retornar el valor 3.
Se me ocurrió hacerlo dentro de un bucle consultando secuencialmente la
existencia de los registros y en caso de que me devuelva cero tomar ese
valor como el primer faltante, pero dicha consulta puede ser larga y pensé
que tal vez exista alguna función SQL que me solucione esto y desconozca.
Saludos y gracias pro la ayuda.
Carlos Adolfo Codesido
* [email protected]