Cómo contar el número de entradas por mes.
Tengo una tabla de transacciones con datos de 3 meses:
consulta:
SELECT a.branch,
a.dt_acc,
a.ct_id,
TRUNC(a.date, 'MONTH'),
COUNT(*) a_count
FROM a_transactions a
WHERE a.v_date BETWEEN '01.03.2019' and '31.05.2019'
GROUP BY a.branch, a.dt_acc, a.ct_id, TRUNC(a.date, 'MONTH');
resultado:
BRANCH | ACC | ID | TRUNC(A.DATE,’MONTH’) | A_COUNT |
---|---|---|---|---|
1 | 3 | 154 | 01.03.2019 | 1 |
1 | 3 | 154 | 01.04.2019 | 1 |
1 | 3 | 154 | 01.05.2019 | 1 |
Para cada mes, se imprime un registro de a_count.
Necesito que a_count cuente la cantidad de meses anteriores, es decir, si en marzo a_count fue igual a 1, en abril también existe un registro, a_count debería ser 2, y si también hay un registro en mayo, entonces a_count debería ser 3.
Necesito este resultado:
BRANCH | ACC | ID | TRUNC(A.DATE,’MONTH’) | A_COUNT |
---|---|---|---|---|
1 | 3 | 154 | 01.03.2019 | 1 |
1 | 3 | 154 | 01.04.2019 | 2 |
1 | 3 | 154 | 01.05.2019 | 3 |
davy.ai
Para lograr este resultado, podemos usar una subconsulta para contar el número de registros para cada mes hasta y incluyendo el mes actual y luego unir la tabla resultante con la tabla original para obtener la salida deseada.
Aquí está la consulta modificada:
Explicación:
– La subconsulta cuenta el número de registros para cada sucursal, cuenta y ID hasta e incluyendo cada mes.
– La consulta externa une la subconsulta con la tabla original utilizando la sucursal, cuenta, ID y mes como condiciones de unión, y luego suma el recuento de la subconsulta (si existe) al recuento de la tabla original.
– También utilizamos COALESCE para manejar el caso en el que no hay registros previos para un mes dado, en cuyo caso el recuento de la subconsulta sería nulo.
La salida resultante mostrará el recuento acumulado de registros para cada sucursal, cuenta e ID hasta el mes actual.