CONSULTA

11/06/2005 - 16:29 por Martin | Informe spam
Que tal.
Quiero hacer una consulta en donde me diga cuales son los numeros de un
cierto campo que no se encuentran en él. por ejemplo si en un campo llamado
id_mascota tengo M1 a M100 y de M103 a M500 para obtener el campo maximo le
hago asi: (select
max(convert(numeric,substring(id_mascota,2,len(id_mascota)))) from mascotas)
y le aumento uno para insertar otro registro que seria el M501, pero como
puedo saber los numeros que no existen en mi tabla entre el numero menor (M1)
y el numero mayor M(500 en este caso), espero haberme explicado bien y que me
puedan ayudar. Gracias
 

Leer las respuestas

#1 Maxi
11/06/2005 - 18:03 | Informe spam
Hola Martin, una forma seria, armar en una tabla temporal todos los numeros
y luego hacer un left join contra esa tabla.

Veamos un ejemplo:

Use NorthWind
Go

create table #pepe (numero varchar(10))



insert into #pepe values ('m1')
insert into #pepe values ('m3')
insert into #pepe values ('m5')
insert into #pepe values ('m6')
insert into #pepe values ('m7')
insert into #pepe values ('m8')
insert into #pepe values ('m10')


create table #pepefull (numero varchar(10))



Declare @n int
set @n = 1

While @n <= 10
begin
insert into #pepefull values ('m' + convert(varchar(2),@n))
set @n = @n + 1
end



Select p.* from #pepefull p left join #pepe p2
on p.numero = p2.numero
where p2.numero is null



nota: #pepe deberia ser tu tabla en cuestion, solo que yo lo genere asi para
ejemplificar. Tambien deberias poner todo esto en un Store por ej.


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Martin" escribió en el mensaje
news:
Que tal.
Quiero hacer una consulta en donde me diga cuales son los numeros de un
cierto campo que no se encuentran en él. por ejemplo si en un campo
llamado
id_mascota tengo M1 a M100 y de M103 a M500 para obtener el campo maximo
le
hago asi: (select
max(convert(numeric,substring(id_mascota,2,len(id_mascota)))) from
mascotas)
y le aumento uno para insertar otro registro que seria el M501, pero como
puedo saber los numeros que no existen en mi tabla entre el numero menor
(M1)
y el numero mayor M(500 en este caso), espero haberme explicado bien y que
me
puedan ayudar. Gracias

Preguntas similares