Select vs Cursor

21/12/2004 - 16:21 por Anonimo | Informe spam
Hola buenos Dias,


Ante todo quiero aclarar que para nada soy amigo de los cursores en SQL, sin
embargo esta vez creo que no me queda otra salida :(. A ver tengo dos tablas,
Nomina y Transaccion, las dos tienen datos parecidos, sin embargo no estan
relacionadas.

La consulta en Transaccion es:

SELECT t.TipoServicio,t.TipoPago, t.NumeroAfiliacion, t.Identificacion,
t.Periodo AS FechaMesada, t.TipoCuenta, t.NumeroCuenta, t.NumeroCheque,
(ISNULL(t.ValorEfectivo,0) + ISNULL(t.ValorCheque,0)) AS
ValorPago, t.TipoTransaccion, t.codigocaja
FROM Transaccion t where CONVERT(CHAR(8),FechaHoraTransaccion,112)
Between '20040802' AND '20040802',

para esta consulta (369) registros

Ahora, necesito ponerle nombre a la identificacion con lo cual le agrego a
toda la sentencia y queda asi:

inner join
(SELECT DISTINCT TOP 100 percent CONVERT(BIGINT,IDENTIFICACION)
IDENTIFICACION,
LEFT( Rtrim(Ltrim(Nombres)) + ' ' + Rtrim(LTRIM(PrimerApellido)) + ' ' +
Rtrim(Ltrim(SegundoApellido)) + REPLICATE(' ',50) ,50)CustName
FROM NOMINA ) N
ON N.IDENTIFICACION = t.IDENTIFICACION
WHERE CONVERT(CHAR(8),FechaHoraTransaccion,112) Between '20040802' AND
'20040802'

Al hacer esto, arroja un resultado de 371 registros, por que puede haber en
transaccion una identificacion con varios numeros de afiliacion. Se que no es
un diseño correcto de las tablas pero no se pueden cambiar.

Alguna sugerencia ??

Gracias a todos de antemano
@dece
 

Leer las respuestas

#1 Maxi
21/12/2004 - 16:56 | Informe spam
Hola, no te entendi que es lo que buscas resolver :(


Salu2
Maxi


"@dece" escribió en el mensaje
news:
Hola buenos Dias,


Ante todo quiero aclarar que para nada soy amigo de los cursores en SQL,
sin
embargo esta vez creo que no me queda otra salida :(. A ver tengo dos
tablas,
Nomina y Transaccion, las dos tienen datos parecidos, sin embargo no
estan
relacionadas.

La consulta en Transaccion es:

SELECT t.TipoServicio,t.TipoPago, t.NumeroAfiliacion, t.Identificacion,
t.Periodo AS FechaMesada, t.TipoCuenta, t.NumeroCuenta, t.NumeroCheque,
(ISNULL(t.ValorEfectivo,0) + ISNULL(t.ValorCheque,0)) AS
ValorPago, t.TipoTransaccion, t.codigocaja
FROM Transaccion t where CONVERT(CHAR(8),FechaHoraTransaccion,112)
Between '20040802' AND '20040802',

para esta consulta (369) registros

Ahora, necesito ponerle nombre a la identificacion con lo cual le agrego
a
toda la sentencia y queda asi:

inner join
(SELECT DISTINCT TOP 100 percent CONVERT(BIGINT,IDENTIFICACION)
IDENTIFICACION,
LEFT( Rtrim(Ltrim(Nombres)) + ' ' + Rtrim(LTRIM(PrimerApellido)) + ' ' +
Rtrim(Ltrim(SegundoApellido)) + REPLICATE(' ',50) ,50)CustName
FROM NOMINA ) N
ON N.IDENTIFICACION = t.IDENTIFICACION
WHERE CONVERT(CHAR(8),FechaHoraTransaccion,112) Between '20040802' AND
'20040802'

Al hacer esto, arroja un resultado de 371 registros, por que puede haber
en
transaccion una identificacion con varios numeros de afiliacion. Se que no
es
un diseño correcto de las tablas pero no se pueden cambiar.

Alguna sugerencia ??

Gracias a todos de antemano
@dece

Preguntas similares