[firebase-br] ¿Cómo hallar los totales comprados, vendidos, cobrados y pagados en un solo SELECT?
W O
sistemas2000profesional em gmail.com
Qui Dez 15 16:22:05 -03 2011
¡¡¡Excelente Wilson, eres un genio!!!
Justamente esto era lo que necesitaba, lo probé y funcionó perfectamente.
/* 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
Muchísimas gracias.
Saludos.
Walter.
2011/12/12 Wilson Rosa <wsrosa em gmail.com>
> 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
> >
> ______________________________________________
> 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