Buscar huecos libres en secuencia de numeros.

21/01/2009 - 11:24 por Tomas | Informe spam
Hola a todos.

Tengo necesidad de encontrar huecos en una numeración a partir de un numero
dado.

Por ejemplo este código me dice el primer hueco libre partiendo desde el
inicio de la tabla:

SELECT TOP 1 Codigo + 1 As PrimerHueco
FROM dbo.Tabla T
WHERE NOT EXISTS( SELECT 1 FROM dbo.Tabla WHERE (Codigo = T.Codigo + 1))

Pero yo necesito conocer el primer hueco libre, por ejemplo a partir del
código 1000.

¿Alguna idea de cómo lo puedo solucionar?.

Gracias por anticipado.

Gracias.
Tomás.

Ejemplo de tabla:

CREATE TABLE [Tabla] (
[Codigo] [int] NOT NULL ,
CONSTRAINT [PK_Tabla] PRIMARY KEY CLUSTERED ( Codigo ) ON [PRIMARY]
) ON [PRIMARY]

INSERT INTO dbo.Tabla(Codigo) VALUES(1)
INSERT INTO dbo.Tabla(Codigo) VALUES(3)
INSERT INTO dbo.Tabla(Codigo) VALUES(6)
INSERT INTO dbo.Tabla(Codigo) VALUES(10)
INSERT INTO dbo.Tabla(Codigo) VALUES(100)
INSERT INTO dbo.Tabla(Codigo) VALUES(1000)
INSERT INTO dbo.Tabla(Codigo) VALUES(2000)
INSERT INTO dbo.Tabla(Codigo) VALUES(9999)

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
21/01/2009 - 14:02 | Informe spam
Añade la condición en el WHERE...

SELECT TOP 1 Codigo + 1 As PrimerHueco
FROM dbo.Tabla T
WHERE NOT EXISTS( SELECT 1 FROM dbo.Tabla WHERE (Codigo = T.Codigo + 1)) AND
codigo >= 1000




Un saludo
-
www.navento.com
Servicios de Localización GPS


"Tomas" wrote:

Hola a todos.

Tengo necesidad de encontrar huecos en una numeración a partir de un numero
dado.

Por ejemplo este código me dice el primer hueco libre partiendo desde el
inicio de la tabla:

SELECT TOP 1 Codigo + 1 As PrimerHueco
FROM dbo.Tabla T
WHERE NOT EXISTS( SELECT 1 FROM dbo.Tabla WHERE (Codigo = T.Codigo + 1))

Pero yo necesito conocer el primer hueco libre, por ejemplo a partir del
código 1000.

¿Alguna idea de cómo lo puedo solucionar?.

Gracias por anticipado.

Gracias.
Tomás.

Ejemplo de tabla:

CREATE TABLE [Tabla] (
[Codigo] [int] NOT NULL ,
CONSTRAINT [PK_Tabla] PRIMARY KEY CLUSTERED ( Codigo ) ON [PRIMARY]
) ON [PRIMARY]

INSERT INTO dbo.Tabla(Codigo) VALUES(1)
INSERT INTO dbo.Tabla(Codigo) VALUES(3)
INSERT INTO dbo.Tabla(Codigo) VALUES(6)
INSERT INTO dbo.Tabla(Codigo) VALUES(10)
INSERT INTO dbo.Tabla(Codigo) VALUES(100)
INSERT INTO dbo.Tabla(Codigo) VALUES(1000)
INSERT INTO dbo.Tabla(Codigo) VALUES(2000)
INSERT INTO dbo.Tabla(Codigo) VALUES(9999)



Respuesta Responder a este mensaje
#2 Carlos Sacristan
21/01/2009 - 17:48 | Informe spam
Por cierto, que para garantizar que la instrucción va a funcionar siempre,
habrá que añadir la cláusula ORDER BY:

SELECT TOP 1 Codigo + 1 As PrimerHueco
FROM dbo.Tabla T
WHERE NOT EXISTS( SELECT 1 FROM dbo.Tabla WHERE (Codigo = T.Codigo + 1) )
AND codigo >= 1000
ORDER BY codigo


Un saludo
-
www.navento.com
Servicios de Localización GPS


"Carlos Sacristan" wrote:


Añade la condición en el WHERE...

SELECT TOP 1 Codigo + 1 As PrimerHueco
FROM dbo.Tabla T
WHERE NOT EXISTS( SELECT 1 FROM dbo.Tabla WHERE (Codigo = T.Codigo + 1)) AND
codigo >= 1000




Un saludo
-
www.navento.com
Servicios de Localización GPS


"Tomas" wrote:

> Hola a todos.
>
> Tengo necesidad de encontrar huecos en una numeración a partir de un numero
> dado.
>
> Por ejemplo este código me dice el primer hueco libre partiendo desde el
> inicio de la tabla:
>
> SELECT TOP 1 Codigo + 1 As PrimerHueco
> FROM dbo.Tabla T
> WHERE NOT EXISTS( SELECT 1 FROM dbo.Tabla WHERE (Codigo = T.Codigo + 1))
>
> Pero yo necesito conocer el primer hueco libre, por ejemplo a partir del
> código 1000.
>
> ¿Alguna idea de cómo lo puedo solucionar?.
>
> Gracias por anticipado.
>
> Gracias.
> Tomás.
>
> Ejemplo de tabla:
>
> CREATE TABLE [Tabla] (
> [Codigo] [int] NOT NULL ,
> CONSTRAINT [PK_Tabla] PRIMARY KEY CLUSTERED ( Codigo ) ON [PRIMARY]
> ) ON [PRIMARY]
>
> INSERT INTO dbo.Tabla(Codigo) VALUES(1)
> INSERT INTO dbo.Tabla(Codigo) VALUES(3)
> INSERT INTO dbo.Tabla(Codigo) VALUES(6)
> INSERT INTO dbo.Tabla(Codigo) VALUES(10)
> INSERT INTO dbo.Tabla(Codigo) VALUES(100)
> INSERT INTO dbo.Tabla(Codigo) VALUES(1000)
> INSERT INTO dbo.Tabla(Codigo) VALUES(2000)
> INSERT INTO dbo.Tabla(Codigo) VALUES(9999)
>
>
>
Respuesta Responder a este mensaje
#3 Tomas
22/01/2009 - 11:16 | Informe spam
Hay días en que uno esta dormido y no termina de despertarse.

Realicé un monton de pruebas y se me olvidó colocar una cláusula WHERE.

Gracias Carlos.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida