Método de agregación avanzado sobre un campo
A veces, queremos aplicar condiciones sobre un método de agregación. Pues bien, esto requiere una configuración extra que de primeras, no es tan intuitiva como lo puede ser la anterior. Imagina que ahora queremos agrupar por los mismo campos que en el ejemplo anterior, pero no queremos que se sume toda la cuantía de HABER, si no que queremos en 3 columnas diferentes, la suma de las cuantías de 3 cuentas diferentes. En SQL sería algo así:
SELECT
ase_eje_ejercicio,
apl_id,
SUM(CASE WHEN cta_cuenta_partida = '0030' THEN HABER ELSE 0 END) cuenta_30,
SUM(CASE WHEN cta_cuenta_partida = '0040' THEN HABER ELSE 0 END) cuenta_40,
SUM(CASE WHEN cta_cuenta_partida = '0050' THEN HABER ELSE 0 END) cuenta_50
FROM GRE_GRE.gre_apuntes
GROUP BY ase_eje_ejercicio, apl_id
Vamos a ver paso a paso lo que ocurre cuando intentamos añadir estos cálculos sobre la consulta anterior:
Tenemos nuestra columna HABER calculada correctamente utilizando el método de agregación Suma.
Creamos un cálculo para obtener la suma del campo HABER cuando la cuenta es ‘0030’. No debemos utilizar aquí ni el SUM ni el AGGREGATE, simplemente con el CASE WHEN y la configuración que veremos luego, sería suficiente:
Si lo añadimos al lienzo, vemos como se descuadran los resultados y no obtenemos lo que estamos buscando:
Ahora
Antes
El valor del campo HABER ahora es incorrecto y el cálculo que hemos añadido también muestra algo que no tiene que ver con lo que parece que le hemos indicado. Para solucionarlo, cambiaremos la configuración del método de agregación de CUENTA_30:
Elegimos el método de agregación deseado (en este caso Suma) y en Por, en vez de dejarlo en blanco como antes, debemos seleccionar la columna o columnas que están en la condición del cálculo (en este caso, CTA_CUENTA_PARTIDA).
Al cambiar esto veremos como se actualizan los valores de la tabla, mostrando ahora sí, lo que estamos buscando:
Por último, creamos todos los cálculos restantes y los añadimos al lienzo. Veremos como por defecto el método de agregación sale en Automático y los resultados son incorrectos. Los cambiaremos todos a Suma Por CTA_CUENTA_PARTIDA y obtendremos lo que necesitamos.