Fórum duvida em select #380355
30/06/2010
0
Paulo Candido
Curtir tópico
+ 0Posts
30/06/2010
Wilson Junior
Gostei + 0
30/06/2010
Tiago Melo
Gostei + 0
30/06/2010
Tiago Melo
Gostei + 0
30/06/2010
Paulo Candido
Gostei + 0
30/06/2010
Emerson Nascimento
select
sum(case when extract(month from DATA)=1 then VALOR else 0 end) mes_01,
sum(case when extract(month from DATA)=2 then VALOR else 0 end) mes_02,
sum(case when extract(month from DATA)=3 then VALOR else 0 end) mes_03,
sum(case when extract(month from DATA)=4 then VALOR else 0 end) mes_04,
sum(case when extract(month from DATA)=5 then VALOR else 0 end) mes_05,
sum(case when extract(month from DATA)=6 then VALOR else 0 end) mes_06,
sum(case when extract(month from DATA)=7 then VALOR else 0 end) mes_07,
sum(case when extract(month from DATA)=8 then VALOR else 0 end) mes_08,
sum(case when extract(month from DATA)=9 then VALOR else 0 end) mes_09,
sum(case when extract(month from DATA)=10 then VALOR else 0 end) mes_10,
sum(case when extract(month from DATA)=11 then VALOR else 0 end) mes_11,
sum(case when extract(month from DATA)=12 then VALOR else 0 end) mes_12
from
FINANCEIRO
where
extract(year from DATA) = 2010
ou, para exibir os resultados de todos os anos em que haja algum registro:
select
extract(year from DATA) ano,
sum(case when extract(month from DATA)=1 then VALOR else 0 end) mes_01,
sum(case when extract(month from DATA)=2 then VALOR else 0 end) mes_02,
sum(case when extract(month from DATA)=3 then VALOR else 0 end) mes_03,
sum(case when extract(month from DATA)=4 then VALOR else 0 end) mes_04,
sum(case when extract(month from DATA)=5 then VALOR else 0 end) mes_05,
sum(case when extract(month from DATA)=6 then VALOR else 0 end) mes_06,
sum(case when extract(month from DATA)=7 then VALOR else 0 end) mes_07,
sum(case when extract(month from DATA)=8 then VALOR else 0 end) mes_08,
sum(case when extract(month from DATA)=9 then VALOR else 0 end) mes_09,
sum(case when extract(month from DATA)=10 then VALOR else 0 end) mes_10,
sum(case when extract(month from DATA)=11 then VALOR else 0 end) mes_11,
sum(case when extract(month from DATA)=12 then VALOR else 0 end) mes_12
from
FINANCEIRO
group by
extract(year from DATA)
no lugar de mes_xx você pode ainda colocar o nome do mês - completo ou abreviado - para que o resultado se mostre ainda mais claro.
Gostei + 0
30/06/2010
Paulo Candido
select
sum(case when extract(month from DATA)=1 then VALOR else 0 end) mes_01,
sum(case when extract(month from DATA)=2 then VALOR else 0 end) mes_02,
sum(case when extract(month from DATA)=3 then VALOR else 0 end) mes_03,
sum(case when extract(month from DATA)=4 then VALOR else 0 end) mes_04,
sum(case when extract(month from DATA)=5 then VALOR else 0 end) mes_05,
sum(case when extract(month from DATA)=6 then VALOR else 0 end) mes_06,
sum(case when extract(month from DATA)=7 then VALOR else 0 end) mes_07,
sum(case when extract(month from DATA)=8 then VALOR else 0 end) mes_08,
sum(case when extract(month from DATA)=9 then VALOR else 0 end) mes_09,
sum(case when extract(month from DATA)=10 then VALOR else 0 end) mes_10,
sum(case when extract(month from DATA)=11 then VALOR else 0 end) mes_11,
sum(case when extract(month from DATA)=12 then VALOR else 0 end) mes_12
from
FINANCEIRO
where
extract(year from DATA) = 2010
ou, para exibir os resultados de todos os anos em que haja algum registro:
select
extract(year from DATA) ano,
sum(case when extract(month from DATA)=1 then VALOR else 0 end) mes_01,
sum(case when extract(month from DATA)=2 then VALOR else 0 end) mes_02,
sum(case when extract(month from DATA)=3 then VALOR else 0 end) mes_03,
sum(case when extract(month from DATA)=4 then VALOR else 0 end) mes_04,
sum(case when extract(month from DATA)=5 then VALOR else 0 end) mes_05,
sum(case when extract(month from DATA)=6 then VALOR else 0 end) mes_06,
sum(case when extract(month from DATA)=7 then VALOR else 0 end) mes_07,
sum(case when extract(month from DATA)=8 then VALOR else 0 end) mes_08,
sum(case when extract(month from DATA)=9 then VALOR else 0 end) mes_09,
sum(case when extract(month from DATA)=10 then VALOR else 0 end) mes_10,
sum(case when extract(month from DATA)=11 then VALOR else 0 end) mes_11,
sum(case when extract(month from DATA)=12 then VALOR else 0 end) mes_12
from
FINANCEIRO
group by
extract(year from DATA)
no lugar de mes_xx você pode ainda colocar o nome do mês - completo ou abreviado - para que o resultado se mostre ainda mais claro.
Gostei + 0
30/06/2010
Emerson Nascimento
CREATE PROCEDURE TOTAL_MENSAL
returns (
ano smallint,
mes smallint,
valor numeric(15,2))
as
declare variable mes_01 numeric(15,2);
declare variable mes_02 numeric(15,2);
declare variable mes_03 numeric(15,2);
declare variable mes_04 numeric(15,2);
declare variable mes_05 numeric(15,2);
declare variable mes_06 numeric(15,2);
declare variable mes_07 numeric(15,2);
declare variable mes_08 numeric(15,2);
declare variable mes_09 numeric(15,2);
declare variable mes_10 numeric(15,2);
declare variable mes_11 numeric(15,2);
declare variable mes_12 numeric(15,2);
declare variable i smallint;
begin
for
select
extract(year from DATA) ano,
sum(case when extract(month from DATA)=1 then VALOR else 0 end) mes_01,
sum(case when extract(month from DATA)=2 then VALOR else 0 end) mes_02,
sum(case when extract(month from DATA)=3 then VALOR else 0 end) mes_03,
sum(case when extract(month from DATA)=4 then VALOR else 0 end) mes_04,
sum(case when extract(month from DATA)=5 then VALOR else 0 end) mes_05,
sum(case when extract(month from DATA)=6 then VALOR else 0 end) mes_06,
sum(case when extract(month from DATA)=7 then VALOR else 0 end) mes_07,
sum(case when extract(month from DATA)=8 then VALOR else 0 end) mes_08,
sum(case when extract(month from DATA)=9 then VALOR else 0 end) mes_09,
sum(case when extract(month from DATA)=10 then VALOR else 0 end) mes_10,
sum(case when extract(month from DATA)=11 then VALOR else 0 end) mes_11,
sum(case when extract(month from DATA)=12 then VALOR else 0 end) mes_12
from
TABELA
group by
extract(year from DATA)
into :ano, :mes_01, :mes_02, :mes_03, :mes_04, :mes_05, :mes_06,
:mes_07, :mes_08, :mes_09, :mes_10, :mes_11, :mes_12 do
begin
i = 1;
while (i <= 12) do
begin
mes = i;
valor = (case i when 1 then mes_01
when 2 then mes_02
when 3 then mes_03
when 4 then mes_04
when 5 then mes_05
when 6 then mes_06
when 7 then mes_07
when 8 then mes_08
when 9 then mes_09
when 10 then mes_10
when 11 then mes_11
when 12 then mes_12
end);
suspend;
i = i+1;
end
end
end
e você pode usá-la como uma tabela:
select * from total_mensal
select * from total_mensal where ano = 2010
select mes, valor from total_mensal where ano = 2009
select valor, mes from total_mensal where ano = 2010 order by mes desc
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)