SQL Consecutivos !!!

18/08/2003 - 17:01 por Edmundo J. Davila | Informe spam
Hola amigos,

Necesito su valiosa colaboracion en el siguiente problema. Debo hacer una
vista o una consulta SQL (SELECT) que
me extraiga el numero de documento de un campo varchar de SQL 2000 de la
forma XX-999999, tres caracteres y seis
numeros y que me ponga una marca cuando se pierda el consecutivo, por
ejemplo:

P10-00001
P10-00002
P10-00003
**P10-00005
P10-00006
P10-00007
**P10-00009
**P10-00011
P10-00012
P10-00013

De antemano agradezco cualquier ayuda que puedan darme.

Atentamente,

Edmundo J. Davila
 

Leer las respuestas

#1 Javier Loria\(MVP\)
18/08/2003 - 19:59 | Informe spam
Hola:
No te sirvio el codigo que te envie anteriormente?
Hola Edmundo:
Es mas facil si pones el codigo de creacion de las Tablas, pero debe ser
algo como:
/* Codigo de Creacion de Tablas */
CREATE TABLE Documentos (
NumeroDocumento VARCHAR(9) NOT NULL PRIMARY KEY,
CONSTRAINT CK_NumDocumento
CHECK (NumeroDocumento LIKE '[A-Z][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9]')
)
/* Insert de Ejemplo */
INSERT Documentos
VALUES('P10-00001')
INSERT Documentos
VALUES('P10-00002')
INSERT Documentos
VALUES('P10-00003')
INSERT Documentos
VALUES('P10-00005')
INSERT Documentos
VALUES('P10-00006')
INSERT Documentos
VALUES('P10-00007')
INSERT Documentos
VALUES('P10-00009')
INSERT Documentos
VALUES('P10-00011')
INSERT Documentos
VALUES('P10-00012')
INSERT Documentos
VALUES('P10-00013')

/* Consulta */
SELECT CASE
WHEN (A.NumDoc<>1) AND
(B.NumDoc IS NULL) THEN '**'
ELSE ''
END+NumeroDocumento as Documento
FROM (SELECT CONVERT(INT,RIGHT(NumeroDocumento,5))
AS NumDoc,
NumeroDocumento
FROM DOCUMENTOS ) AS A
LEFT JOIN (SELECT CONVERT(INT,RIGHT(NumeroDocumento,5))
AS NumDoc,
FROM DOCUMENTOS) AS B
ON
A.NumDoc=B.NumDoc+1
/* Fin de Consulta */

Espero que te sirva. Una nota adicional es que probablemente quieres cambiar
el VARCHAR(9) por un CHAR(9) que es mas eficiente.
==

Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Edmundo J. Davila escribio:
Hola amigos,

Necesito su valiosa colaboracion en el siguiente problema. Debo
hacer una vista o una consulta SQL (SELECT) que
me extraiga el numero de documento de un campo varchar de SQL 2000 de
la forma XX-999999, tres caracteres y seis
numeros y que me ponga una marca cuando se pierda el consecutivo, por
ejemplo:

P10-00001
P10-00002
P10-00003
**P10-00005
P10-00006
P10-00007
**P10-00009
**P10-00011
P10-00012
P10-00013

De antemano agradezco cualquier ayuda que puedan darme.

Atentamente,

Edmundo J. Davila

Preguntas similares