[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