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

Preguntas similare

Leer las respuestas

#6 Anonimo
21/12/2004 - 21:19 | Informe spam
Pues en caso que el cliente haya tenido 2 pagos el mismo dia, se deben tener
los dos valores pagados, realmente ese es el problema que estos valores
aparecen dos veces c/u.

"Maxi" wrote:

Mostrar la cita
#7 ulises
21/12/2004 - 23:11 | Informe spam
Si tu problema es juntar esos pagos en lugar de hacer el
join con la tabla original realizala contra una tabla
derivada que contenga el agrupamiento de esos pagos por fecha.

Saludos,
Ulises

Mostrar la cita
dia, se deben tener
Mostrar la cita
estos valores
Mostrar la cita
el tema? vos queres
Mostrar la cita
tomas?
Mostrar la cita
mensaje
Mostrar la cita
pagar. Cada cliente
Mostrar la cita
,NumeroAfiliacion,PrimerApellido,SegundoApellido,Nombres,TipoIdentificacion,Identificacion
Mostrar la cita
decir que la tabla
Mostrar la cita
TipoIdentificacion
Mostrar la cita
TipoTransaccion,TipoServicio,NumeroAfiliacion,Identificacion,Periodo,CodigoCaja,ValorEfectivo,ValorCheque,FechaHoraTransaccion
Mostrar la cita
2004-01-08 15:54:46.000
Mostrar la cita
2003-10-10 09:03:58.000
Mostrar la cita
2003-11-21 09:46:35.000
Mostrar la cita
2003-12-04 16:40:06.000
Mostrar la cita
2004-02-09 16:16:29.000
Mostrar la cita
t.NumeroAfiliacion, t.Identificacion,
Mostrar la cita
t.NumeroCuenta, t.NumeroCheque,
Mostrar la cita
ISNULL(t.ValorCheque,0)) AS
Mostrar la cita
CONVERT(CHAR(8),FechaHoraTransaccion,112)
Mostrar la cita
entonces:
Mostrar la cita
CONVERT(BIGINT,IDENTIFICACION)
Mostrar la cita
Rtrim(LTRIM(PrimerApellido)) + ' ' +
Mostrar la cita
,50)CustName
Mostrar la cita
en el mismo dia y el
Mostrar la cita
Identificacion en
Mostrar la cita
desafortunadamente.
Mostrar la cita
hacer y vemos como
Mostrar la cita
el mensaje
Mostrar la cita
news:
Mostrar la cita
en el mensaje
Mostrar la cita
news:
Mostrar la cita
de los cursores en
Mostrar la cita
salida :(. A ver tengo
Mostrar la cita
parecidos, sin embargo
Mostrar la cita
t.NumeroAfiliacion,
Mostrar la cita
t.NumeroCuenta,
Mostrar la cita
ISNULL(t.ValorCheque,0)) AS
Mostrar la cita
identificacion con lo cual le
Mostrar la cita
CONVERT(BIGINT,IDENTIFICACION)
Mostrar la cita
Rtrim(LTRIM(PrimerApellido)) +
Mostrar la cita
',50) ,50)CustName
Mostrar la cita
CONVERT(CHAR(8),FechaHoraTransaccion,112) Between '20040802'
Mostrar la cita
registros, por que puede
Mostrar la cita
numeros de afiliacion. Se
Mostrar la cita
pueden cambiar.
Mostrar la cita
Ads by Google
Search Busqueda sugerida