Consulta SQL !!!

14/08/2003 - 17:49 por Edmundo Davila | Informe spam
Hola amigos,

Necesito 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 similare

Leer las respuestas

#1 Gustavo Larriera [MVP SQL]
15/08/2003 - 05:18 | Informe spam
Considerando que debes tener a la vista el registro anterior al que estás
posicionado, la solución directa con SELECT no parece viable (debido a que
una SELECT no maneja el concepto de secuencia).

Deberias intentar con un CURSOR donde en cada iteración de recorrida vayas
almacenando en una variable el valor de la iteración anterior, a los efectos
de comparar ys aber si se ha salteado algún valor.

Muchos saludos
gux

Gustavo Larriera, MSFT MVP-SQL
Montevideo (Uruguay)

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.



"Edmundo Davila" wrote in message
news:08e401c3627b$b33bdc50$
Hola amigos,

Necesito 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
Respuesta Responder a este mensaje
#2 Emilio Boucau
15/08/2003 - 16:06 | Informe spam
Edmundo,

eso que pedis fue uno de los quizz que pusimos con Miguel en PortalSQL en un
concurso. Hubo varias repuestas.
Las mas sencilla es hacer un SELECT con una sub-consulta, pero eso tambien
tiene sus contras. Miralos y decidi si te sirven.

Saludos !

Emilio Boucau
Microsoft MVP SQL Server
http://www.portalsql.com
PASS Spanish Group
http://www.sqlpass.org

Buenos Aires - Argentina
Respuesta Responder a este mensaje
#3 Javier Loria\(MVP\)
15/08/2003 - 16:23 | Informe spam
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.
Saludos,


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 Davila escribio:
Hola amigos,

Necesito 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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida