[firebase-br] ¿Cómo hallar los totales comprados, vendidos, cobrados y pagados en un solo SELECT?
Wilson Rosa
wsrosa em gmail.com
Seg Dez 12 15:30:21 -03 2011
Hola Walter,
No Firebird não há como fazer Pivot Table, que seria muito mais fácil de
utilizar.
Então, fiz de outras 2 maneiras:
/* Meses na Vertical */
SELECT
m.mvc_tipmov,
SUM(CASE EXTRACT(MONTH FROM m.mvc_fechax) WHEN 1 THEN m.mvc_totalx ELSE 0
END) as ENE,
SUM(CASE EXTRACT(MONTH FROM m.mvc_fechax) WHEN 2 THEN m.mvc_totalx ELSE 0
END) as FEB,
SUM(CASE EXTRACT(MONTH FROM m.mvc_fechax) WHEN 3 THEN m.mvc_totalx ELSE 0
END) as MAR,
SUM(CASE EXTRACT(MONTH FROM m.mvc_fechax) WHEN 4 THEN m.mvc_totalx ELSE 0
END) as ABR,
SUM(CASE EXTRACT(MONTH FROM m.mvc_fechax) WHEN 5 THEN m.mvc_totalx ELSE 0
END) as MAY,
SUM(CASE EXTRACT(MONTH FROM m.mvc_fechax) WHEN 6 THEN m.mvc_totalx ELSE 0
END) as JUN,
SUM(CASE EXTRACT(MONTH FROM m.mvc_fechax) WHEN 7 THEN m.mvc_totalx ELSE 0
END) as JUL,
SUM(CASE EXTRACT(MONTH FROM m.mvc_fechax) WHEN 8 THEN m.mvc_totalx ELSE 0
END) as AGO,
SUM(CASE EXTRACT(MONTH FROM m.mvc_fechax) WHEN 9 THEN m.mvc_totalx ELSE 0
END) as SEP,
SUM(CASE EXTRACT(MONTH FROM m.mvc_fechax) WHEN 10 THEN m.mvc_totalx ELSE 0
END) as OCT,
SUM(CASE EXTRACT(MONTH FROM m.mvc_fechax) WHEN 11 THEN m.mvc_totalx ELSE 0
END) as NOV,
SUM(CASE EXTRACT(MONTH FROM m.mvc_fechax) WHEN 12 THEN m.mvc_totalx ELSE 0
END) as DIC
FROM movimcab m
GROUP BY 1
ou
/* Meses Horizontal */
SELECT
DECODE( EXTRACT(MONTH FROM m.mvc_fechax),
1 ,'Ene', 2 ,'Feb', 3 ,'Mar', 4 ,'Abr', 5 ,'May', 6 ,'Jun',
7 ,'Jul', 8 ,'Ago', 9 ,'Sep', 10,'Oct', 11,'Nov', 12,'Dic') AS MES,
SUM(CASE m.mvc_tipmov WHEN 'ECM' THEN m.mvc_totalx ELSE 0 END) as ECM,
SUM(CASE m.mvc_tipmov WHEN 'SVT' THEN m.mvc_totalx ELSE 0 END) as SVT,
SUM(CASE m.mvc_tipmov WHEN 'COB' THEN m.mvc_totalx ELSE 0 END) as COB,
SUM(CASE m.mvc_tipmov WHEN 'PAG' THEN m.mvc_totalx ELSE 0 END) as PAG
FROM movimcab m
GROUP BY 1
Veja se isto te ajuda.
Abraços,
*Wilson Rosa
*Desenvolvedor Desk
*wsrosa em gmail.com
*
*
*
2011/12/11 W O <sistemas2000profesional em gmail.com>
> Hola a todos
>
> Tengo una tabla llamada MOVIMCAB con las siguientes filas y columnas.
>
> MVC_TIPMOV, MVC_FECHAX, MVC_TOTALX
> ECM 05/01/2011 125
> ECM 28/01/2011 210
> ECM 04/02/2011 140
> SVT 07/01/2011 350
> SVT 12/01/2011 420
> SVT 03/02/2011 380
> COB 06/01/2011 400
> PAG 09/01/2011 330
> PAG 10/02/2011 150
>
> Y lo que quisiera obtener es algo así:
>
> MES ECM SVT COB PAG
> 1 335 770 400 330
> 2 140 380 0 150
>
> Donde MES es el número del mes (Enero, Febrero, Marzo, etc.) y en las
> columnas ECM, SVT, COB, y PAG se encuentra el total acumulado de ese mes.
>
> La columna MVC_FECHAX tiene las fechas con el formato dd/mm/aaaa
>
> ¿Alguien sabe cuál es el SELECT que debería escribir para conseguir ese
> resultado?
>
> De antemano, muchísimas gracias.
>
> Saludos.
>
> Walter.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista