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]

 

Responder a