Lo más correcto para este caso sería utilizar secuencias, aunque creo que eso no te garantiza que queden huecos en las claves, ya que siempre podría fallar una INSERT con NEXT VALUE FOR <secuencia>, con lo que (creo) el valor de la secuencia se pierde. Si alguien puede confirmar este punto, pues mejor :-)

El 28/09/2013 7:42, Carlos escribió:
Hola

No tengo un sistema a mano así que no se si esto tendrá algún error, pero mas o menos yo lo haría de la siguiente manera

SELECT NUMERO FROM FICHERO WHERE NUMERO + 1 NOT IN (SELECT NUMERO FROM FICHERO)

No es lo mas óptimo, pero siendo ficheros pequeños (por lo que dices, menos de cien mil registros) te puede valer para saber a partir de qué registros tienes saltos.

Si lo que quieres es saber exactamente que números faltan, y como solución rápida, crea una tabla que sólo contenga un campo numérico (SECUENCIA) y llénalo con valores del 1 al 99999 (o el máximo que tengas). Después

SELECT SECUENCIA FROM TABLADEANDARPORCASA WHERE SECUENCIA NOT IN (SELECT NUMERO FROM FICHERO)

Y si quieres algo mas "serio", a partir de la V5R3 se pueden crear algo llamado secuencias con el comando CREATE SEQUENCE, pero nunca lo he usado así que te tocaría investigar.

Saludos




El 27/09/13 13:30, Fernando idem escribió:
Buenos dias a todos;

Estoy intentando hacer una sentencia SQL para un problema surgido y haber si me pueden ayudar a solucionarlo, siempre que sea posible.

Tenemos cuatro ficheros, que cuando se dan de alta un dato, en cualquiera de ellos, se le da un numero correlativo. Este número es único para los cuatro ficheros. Por lo que no puede haber un numero repetido en cualquiera de estos cuatro ficheros. Este nº correlativo va del 1 al 99.999. Este es un campo numérico de 5 posiciones.

Hemos tenido algún problema y hay saltos en esa correlación,  por ejemplo están dados de alta los nº 33645, 33646, y luego pega un salto al 33655. Existen varios saltos de este tipo. 

Queremos averiguar, cuales son los saltos que hay, para ver que numeraciones no se han dado de alta. De esta manera poder rescatarlos y poder utilizarlos.

Estoy intentando hacerlo en SQL, si  no lo consigo, pues tendré que hacer un programa.

Un saludo











____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.


____________________________________________________ Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd ) Forum.Help400 © Publicaciones Help400, S.L.


Logotipo Ayuntamiento Vitoria-Gasteiz

José de la Herran Núñez
Kordinazio Teknikoko Burua
Jefe del Área de Coordinación Técnica

Informazioaren Teknologien Saila
Departamento de Tecnologías de la Información

Tel: 945161614 | Fax 945161600
| www.vitoria-gasteiz.org

Logotipo Green Capital

KONFIDENTZIALTASUNA

Komunikazio honen edukia eta honi erantsitako dokumentazio osoarena konfidentziala da eta adierazitako jasotzaileari beste inori ez dagokio.
Zeu jasotzaile ez bazina, jakinaraz iezaguzu, mesedez, eta eskatu nahi dizugu edukiaren berri inori ez esan eta mezua ezaba dezazula.

CONFIDENCIALIDAD

El contenido de esta comunicación, así como el de toda la documentación anexa, es confidencial y va dirigido únicamente al destinatario del mismo.
En el supuesto de que usted no fuera el destinatario, le solicitamos que nos lo indique y no comunique su contenido a terceros, procediendo a su destrucción.

CONFIDENCIALITY

The content of this communication and any attached information is confidential and exclusively for the use of the addressee.
If you are not the addressee, we ask you to notify to the sender and do not pass its content to another person, and please be sure you destroy it.


____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a