[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