
Ayuda con consulta
Publicado por Juan Francisco (5 intervenciones) el 04/01/2023 21:26:07
me piden el siguiente reporte:
Identification: cédula en formato de plástico (e.g. X-XXX-XXX)
FirstReloadDate: fecha en la que se le dio la primera carga a un beneficiario (e.g. YYYY-MM-DD)
LastReloadDate: fecha en la que se le dio la última recarga a un beneficiario (e.g. YYYY-MM-DD)
Balance: saldo del beneficiario (e.g. 120.00, 0.99, -100.00)
LastTransactionDate: fecha de la última compra del beneficiario (e.g. YYYY-MM-DD)
PIN: si tiene PIN el beneficiario (true / false, en STRING)
datos que obtengo de dos tablas con la siguiente consulta:
SELECT u.cedula,MIN(m.fecha_transaccion) as PRIMERA_CARGA,MAX(m.fecha_transaccion) as ULTIMA_CARGA,MIN(m.saldo_nuevo) as BALANCE,max(m.fecha_transaccion) AS ULTMA_TRANSACCION,
CASE
WHEN u.pinbeneficiario<>'' THEN 'true'
ELSE 'false'
END AS PIN
FROM movimiento m
INNER JOIN usuario u ON m.id_beneficiario=u.idusuario
WHERE
m.id_beneficiario = 36
AND m.id_programa=1
AND m.tipooperacion='v'
el resultado es correcto en cuanto a lo que la consulta pide, sin embargo para MIN(m.fecha_transaccion) as PRIMERA_CARGA debe mostrar la primera fecha en base a un campo de esa tabla que almacena una C haciendo referencia a la carga inicial, MAX(m.fecha_transaccion) as ULTIMA_CARGA hace referencia a la ultima fecha de tipo C que se ha hecho, max(m.fecha_transaccion) AS ULTMA_TRANSACCION este hace refencia a la fecha de la ultima transaccion de tipo V, y MIN(m.saldo_nuevo) as BALANCE hace referencia a el saldo que le queda que puede basarse en la ultima transaccion de tipo V que se ha realizado.
Cabe resaltar que el unico dato que obtengo de la tabla usuario es el campo cedula
imagen de la tabla movimiento

Resultado esperado:

USO MARIADB
Identification: cédula en formato de plástico (e.g. X-XXX-XXX)
FirstReloadDate: fecha en la que se le dio la primera carga a un beneficiario (e.g. YYYY-MM-DD)
LastReloadDate: fecha en la que se le dio la última recarga a un beneficiario (e.g. YYYY-MM-DD)
Balance: saldo del beneficiario (e.g. 120.00, 0.99, -100.00)
LastTransactionDate: fecha de la última compra del beneficiario (e.g. YYYY-MM-DD)
PIN: si tiene PIN el beneficiario (true / false, en STRING)
datos que obtengo de dos tablas con la siguiente consulta:
SELECT u.cedula,MIN(m.fecha_transaccion) as PRIMERA_CARGA,MAX(m.fecha_transaccion) as ULTIMA_CARGA,MIN(m.saldo_nuevo) as BALANCE,max(m.fecha_transaccion) AS ULTMA_TRANSACCION,
CASE
WHEN u.pinbeneficiario<>'' THEN 'true'
ELSE 'false'
END AS PIN
FROM movimiento m
INNER JOIN usuario u ON m.id_beneficiario=u.idusuario
WHERE
m.id_beneficiario = 36
AND m.id_programa=1
AND m.tipooperacion='v'
el resultado es correcto en cuanto a lo que la consulta pide, sin embargo para MIN(m.fecha_transaccion) as PRIMERA_CARGA debe mostrar la primera fecha en base a un campo de esa tabla que almacena una C haciendo referencia a la carga inicial, MAX(m.fecha_transaccion) as ULTIMA_CARGA hace referencia a la ultima fecha de tipo C que se ha hecho, max(m.fecha_transaccion) AS ULTMA_TRANSACCION este hace refencia a la fecha de la ultima transaccion de tipo V, y MIN(m.saldo_nuevo) as BALANCE hace referencia a el saldo que le queda que puede basarse en la ultima transaccion de tipo V que se ha realizado.
Cabe resaltar que el unico dato que obtengo de la tabla usuario es el campo cedula
imagen de la tabla movimiento

Resultado esperado:

USO MARIADB
Valora esta pregunta


0