› Fóruns › SQL e PL/SQL › Resultado mensal › Resultado mensal
Seguindo a lógica do Thunder e já transformando meses em colunas, você pode fazer o seguinte:
with t1 as
(select 1 pessoa, 1 comissao, sysdate + 30 data from dual
union all
select 1, 2, sysdate from dual
union all
select 2, 2, sysdate - 45 from dual
union all
select 2, 2, sysdate - 80 from dual
union all
select 2, 2, sysdate + 60 from dual
union all
select 1, 2, sysdate + 30 from dual)
select pessoa,
sum(mes1),
sum(mes2),
sum(mes3),
sum(mes4),
sum(mes5),
sum(mes6),
sum(mes7),
sum(mes8),
sum(mes9),
sum(mes10),
sum(mes11),
sum(mes12)
from
(select pessoa,
case when to_char(data,'MM') = 01 then comissao else 0 end mes1,
case when to_char(data,'MM') = 02 then comissao else 0 end mes2,
case when to_char(data,'MM') = 03 then comissao else 0 end mes3,
case when to_char(data,'MM') = 04 then comissao else 0 end mes4,
case when to_char(data,'MM') = 05 then comissao else 0 end mes5,
case when to_char(data,'MM') = 06 then comissao else 0 end mes6,
case when to_char(data,'MM') = 07 then comissao else 0 end mes7,
case when to_char(data,'MM') = 08 then comissao else 0 end mes8,
case when to_char(data,'MM') = 09 then comissao else 0 end mes9,
case when to_char(data,'MM') = 10 then comissao else 0 end mes10,
case when to_char(data,'MM') = 11 then comissao else 0 end mes11,
case when to_char(data,'MM') = 12 then comissao else 0 end mes12
from t1)
group by pessoa;
Isso considerando que existe um campo data na tabela pra você poder separar mês a mês.