Cita:
Empezado por roman
En MySQL podemos hacer esto:
Código SQL [-]select nombre, sum(if(extract(month from fecha) = 1, monto, 0)) as enero, sum(if(extract(month from fecha) = 2, monto, 0)) as febrero, ... sum(if(extract(month from fecha) = 12, monto, 0)) as diciembre from ingresos group by nombre
que, me parece, da el resultado que quieres y sin usar subconsultas ni tablas temporales. Supongo que en Firebird se puede hacer algo similar si tiene un condicional IF y alguna función para extraer las partes de una fecha.
Por cierto, tu tabla de ingresos debería llevar el código del cliente en lugar de su nombre, ¿no crees?
// Saludos
|
Hola Roman. Gracias por el Aporte, estoy viendo una nueva forma de consulta que voy a ver como funciona, pero la consulta que tengo desarrollada ya me esta funcionando. que es la siguiente
Código SQL
[-]
SELECT
CLIENTE.NOMBRE,
(SELECT SUM(INGRESO.MONTO) FROM INGRESO WHERE CLIENTE.NOMBRE = INGRESO.NOMBRE AND (EXTRACT(MONTH FROM FECHA_INGRESO) = 1) AND (EXTRACT(YEAR FROM FECHA_INGRESO) = 2012)) As "ENERO",
(SELECT SUM(INGRESO.MONTO) FROM INGRESO WHERE CLIENTE.NOMBRE = INGRESO.NOMBRE AND (EXTRACT(MONTH FROM FECHA_INGRESO) = 2) AND (EXTRACT(YEAR FROM FECHA_INGRESO) = 2012)) As "FEBRERO"
FROM ( SELECT DISTINCT NOMBRE
FROM CLIENTE)
Este tipo de consulta me hace el reporte anual de diferentes años, claro esta que el 2012 debera ser ingresado como variable.
Voy a modificar mi consulta por una de tu tipo ROMAN.
Gracias por la AYUDA a todos