Ayuda con esta consulta por favor!!!!

07/01/2004 - 01:23 por Luz | Informe spam
LLevo todo el día sin poder resolver esto.

La siguiente consulta obtiene las tarjetas que fueron
aprobadas para cierta transacción y el monto de la misma,
necesito obtener también el tiempo que duró la
transacción. El problema es que cuando incluyo la línea
comentada la cifra de transacciones se dispara y no se
como hacer para obtener el tiempo que duro la transacción
en primera sin que me repitan las tarjetas y en segunda
sin que me devuelva un campo fecha sino la duración en
minutos.

Agradeceré infinitamente sus aportaciones,
Luz

SELECT DISTINCT A.TARJETA,A.MONTO,
FROM TBTEFTC A, TBEMB B
WHERE A.TIMESTAMP BETWEEN '2004-01-02 00:00:00' AND '2004-
01-02 23:59:59'
AND A.NOAPROBACION<>'000000'
AND A.TARJETA=B.NTARJETA
AND B.DNIS IN ('9123','7922')
ORDER BY A.TARJETA

Preguntas similare

Leer las respuestas

#1 Maximiliano Damian Accotto
07/01/2004 - 01:34 | Informe spam
estimada Luz

a ver si te entendi, vos queres hacer uina diferencias entre fechas no?

porque no probas con datediff

SELECT DATEDIFF(minute, campofecha1, campofecha2) AS no_of_days



SELECT DISTINCT A.TARJETA,A.MONTO,
DATEDIFF(minute,B.FECHA_H_ENTRADA ,B.FECHA_H_TERMINACION) AS DURACION

FROM TBTEFTC A inner join TBEMB B on
A.TARJETA=B.NTARJETA

WHERE A.TIMESTAMP BETWEEN '2004-01-02 00:00:00' AND '2004-
01-02 23:59:59'
AND A.NOAPROBACION<>'000000'
AND B.DNIS IN ('9123','7922')
ORDER BY A.TARJETA


seria muy bueno que nos pases cuando es asi la definicion de las tablas y
algunos datos asi nos podemos dar mas cuenta y tratar de ayudarte de una
forma mucho mas profesional ;-)

Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
"Luz" escribió en el mensaje
news:043001c3d4b4$794e9220$
LLevo todo el día sin poder resolver esto.

La siguiente consulta obtiene las tarjetas que fueron
aprobadas para cierta transacción y el monto de la misma,
necesito obtener también el tiempo que duró la
transacción. El problema es que cuando incluyo la línea
comentada la cifra de transacciones se dispara y no se
como hacer para obtener el tiempo que duro la transacción
en primera sin que me repitan las tarjetas y en segunda
sin que me devuelva un campo fecha sino la duración en
minutos.

Agradeceré infinitamente sus aportaciones,
Luz

SELECT DISTINCT A.TARJETA,A.MONTO,
FROM TBTEFTC A, TBEMB B
WHERE A.TIMESTAMP BETWEEN '2004-01-02 00:00:00' AND '2004-
01-02 23:59:59'
AND A.NOAPROBACION<>'000000'
AND A.TARJETA=B.NTARJETA
AND B.DNIS IN ('9123','7922')
ORDER BY A.TARJETA
Respuesta Responder a este mensaje
#2 Liliana Sorrentino
07/01/2004 - 13:37 | Informe spam
Luz,
Parecería que puede darse el caso de tener más de una tarjeta. De ser así,
tendrías que sumar las duraciones? Entonces una opción sería:

SELECT A.TARJETA, A.MONTO,
SUM(DATEDIFF(MI, B.FECHA_H_terminacion, B.FECHA_H_entrada)) AS DURACION
FROM TBTEFTC A, TBEMB B
WHERE A.TARJETA=B.TARJETA -- más todas tus condiciones
GROUP BY A.TARJETA, A.MONTO
ORDER BY A.TARJETA

Saludos... Liliana.

"Luz" escribió en el mensaje
news:043001c3d4b4$794e9220$
LLevo todo el día sin poder resolver esto.

La siguiente consulta obtiene las tarjetas que fueron
aprobadas para cierta transacción y el monto de la misma,
necesito obtener también el tiempo que duró la
transacción. El problema es que cuando incluyo la línea
comentada la cifra de transacciones se dispara y no se
como hacer para obtener el tiempo que duro la transacción
en primera sin que me repitan las tarjetas y en segunda
sin que me devuelva un campo fecha sino la duración en
minutos.

Agradeceré infinitamente sus aportaciones,
Luz

SELECT DISTINCT A.TARJETA,A.MONTO,
FROM TBTEFTC A, TBEMB B
WHERE A.TIMESTAMP BETWEEN '2004-01-02 00:00:00' AND '2004-
01-02 23:59:59'
AND A.NOAPROBACION<>'000000'
AND A.TARJETA=B.NTARJETA
AND B.DNIS IN ('9123','7922')
ORDER BY A.TARJETA
Respuesta Responder a este mensaje
#3 ulises
07/01/2004 - 16:21 | Informe spam
Me parece que también debería sumar el monto y considerar
segundos en lugar de minutos para obtener algo más exacto,
por ejemplo si trato de reproducir el ambiente en base a
los datos :

CREATE TABLE TBTEFTC ( TARJETA int, MONTO money,
NOAPROBACION char(6), TIMESTAMP datetime )
CREATE TABLE TBEMB ( NTARJETA int, DNIS char(4),
FECHA_H_ENTRADA datetime, FECHA_H_TERMINACION datetime )

INSERT INTO TBTEFTC VALUES ( 1,
1000.00, '100000','20040102 01:00:00')
INSERT INTO TBTEFTC VALUES ( 1, 500.00, '100000','20040102
01:30:00')
INSERT INTO TBTEFTC VALUES ( 2,
2000.00, '100000','20040102 02:00:00')
INSERT INTO TBTEFTC VALUES ( 3,
3000.00, '100000','20040102 03:00:00')
INSERT INTO TBTEFTC VALUES ( 4,
4000.00, '100000','20040102 04:00:00')
INSERT INTO TBTEFTC VALUES ( 5,
5000.00, '100000','20040102 05:00:00')

INSERT INTO TBEMB VALUES ( 1, '9123', '20040102
01:00:00', '20040102 01:01:10')
INSERT INTO TBEMB VALUES ( 1, '9123', '20040102
01:30:00', '20040102 01:31:10')
INSERT INTO TBEMB VALUES ( 2, '9123', '20040102
02:00:00', '20040102 02:02:20')
INSERT INTO TBEMB VALUES ( 3, '9123', '20040102
03:00:00', '20040102 03:03:30')
INSERT INTO TBEMB VALUES ( 4, '9123', '20040102
04:00:00', '20040102 04:04:40')
INSERT INTO TBEMB VALUES ( 5, '9123', '20040102
05:00:00', '20040102 05:05:50')

y ejecuto :

SELECT A.TARJETA,
SUM(A.MONTO),
SUM(DATEDIFF
(second,B.FECHA_H_ENTRADA,B.FECHA_H_TERMINACION)) AS
DURACION
FROM TBTEFTC A LEFT JOIN TBEMB B On A.TARJETA=B.NTARJETA
WHERE A.TIMESTAMP BETWEEN '20040102 00:00:00'
AND '20040102 23:59:59'
AND A.NOAPROBACION<>'000000'
AND B.DNIS IN ('9123','7922')
GROUP BY A.TARJETA
ORDER BY A.TARJETA

obtengo :

TARJETA DURACION
1 3000.0000 280
2 2000.0000 140
3 3000.0000 210
4 4000.0000 280
5 5000.0000 350

(5 row(s) affected)

no sé si eso es lo que necesita Luz.

Saludos,
Ulises

Luz,
Parecería que puede darse el caso de tener más de una


tarjeta. De ser así,
tendrías que sumar las duraciones? Entonces una opción


sería:

SELECT A.TARJETA, A.MONTO,
SUM(DATEDIFF(MI, B.FECHA_H_terminacion,


B.FECHA_H_entrada)) AS DURACION
FROM TBTEFTC A, TBEMB B
WHERE A.TARJETA=B.TARJETA -- más todas tus condiciones
GROUP BY A.TARJETA, A.MONTO
ORDER BY A.TARJETA

Saludos... Liliana.

"Luz" escribió en el mensaje
news:043001c3d4b4$794e9220$
LLevo todo el día sin poder resolver esto.

La siguiente consulta obtiene las tarjetas que fueron
aprobadas para cierta transacción y el monto de la misma,
necesito obtener también el tiempo que duró la
transacción. El problema es que cuando incluyo la línea
comentada la cifra de transacciones se dispara y no se
como hacer para obtener el tiempo que duro la transacción
en primera sin que me repitan las tarjetas y en segunda
sin que me devuelva un campo fecha sino la duración en
minutos.

Agradeceré infinitamente sus aportaciones,
Luz

SELECT DISTINCT A.TARJETA,A.MONTO,
FROM TBTEFTC A, TBEMB B
WHERE A.TIMESTAMP BETWEEN '2004-01-02 00:00:00' AND '2004-
01-02 23:59:59'
AND A.NOAPROBACION<>'000000'
AND A.TARJETA=B.NTARJETA
AND B.DNIS IN ('9123','7922')
ORDER BY A.TARJETA


.

Respuesta Responder a este mensaje
#4 Luz
07/01/2004 - 21:38 | Informe spam
Muchas gracias a todos por la ayuda, he solucionado mi
problema.
Respuesta Responder a este mensaje
#5 Maximiliano Damian Accotto
07/01/2004 - 21:45 | Informe spam
Luz, si nos cuentas como lo has solucionado mejor ;-)

Gracias

Maximiliano Damian Accotto


"Luz" escribió en el mensaje
news:04cb01c3d55e$3feb1940$
Muchas gracias a todos por la ayuda, he solucionado mi
problema.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida