Help - SQL Case When - SUM
22/11/2019
0
Bom dia senhores, estou com um problema pra somar algumas verbas por grupos.
Preciso colocar em um relatório o valor das verbas agrupados por grupos.
A tabela de "VERBA_ADICIONAL" traz esses dados:
TDAV_CODIGO COD_VERBA VALOR
189 C137 REMUNERACAO FIXA[+]
189 C138 REMUNERACAO FIXA[+]
189 C139 REMUNERACAO FIXA[+]
189 C152 VARIAVEIS[+]
189 C152 VARIAVEIS[+]
189 E038 BENEFICIOS[+]
189 E040 BENEFICIOS[+]
189 E062 BENEFICIOS[+]
Pra recuperar o valor da verba, em R$, faz um join com a tabela FUNC_MOVI. Que tem estes dados:
COD_VERBA VALOR
B788 99
T010 185,74
B888 243,34
B887 1
B889 1
B878 99
B844 407,65
Travei aqui, que não sai nada... hehehehehe
Alguem pode ajudar?
O cenario ideal seria assim mais ou menos, agrupar em colunas a soma dos valores dessas verbas. Caso o cliente não tivesse aquele tipo de verba, o resultado seria null.
ID BENEFICIOS VARIAVEIS REMUNERACAO FIXA
30444 500 700 300
25879 250 900 NULL
304879 100 300 350
99875 600 Null 300
Att
select sum(fm.valor(case when vda.valor = 'BENEFICIOS[+]' then 1 else 0 end)) as BENEFICIOS
,sum(fm.valor(case when vda.valor = 'REMUNERACAO FIXA[+]' then 1 else 0 end)) as REMUNERACAO FIXA
,sum(fm.valor(case when vda.valor = 'VARIAVEIS[+]' then 1 else 0 end)) as VARIAVEIS
from funcionario_movimentos fm
inner join verbas v
on fm.cod_verba = v.codigo
left outer join verba_dado_adicional vda
on fm.cod_verba = vda.cod_verba
and vda.tdav_codigo = 189
and vda.data >= trunc(sysdate)
where fm.id_funcionario = 3048766
and fm.ano_competencia = 2019
and fm.mes_competencia = 09
group by
Preciso colocar em um relatório o valor das verbas agrupados por grupos.
A tabela de "VERBA_ADICIONAL" traz esses dados:
TDAV_CODIGO COD_VERBA VALOR
189 C137 REMUNERACAO FIXA[+]
189 C138 REMUNERACAO FIXA[+]
189 C139 REMUNERACAO FIXA[+]
189 C152 VARIAVEIS[+]
189 C152 VARIAVEIS[+]
189 E038 BENEFICIOS[+]
189 E040 BENEFICIOS[+]
189 E062 BENEFICIOS[+]
Pra recuperar o valor da verba, em R$, faz um join com a tabela FUNC_MOVI. Que tem estes dados:
COD_VERBA VALOR
B788 99
T010 185,74
B888 243,34
B887 1
B889 1
B878 99
B844 407,65
Travei aqui, que não sai nada... hehehehehe
Alguem pode ajudar?
O cenario ideal seria assim mais ou menos, agrupar em colunas a soma dos valores dessas verbas. Caso o cliente não tivesse aquele tipo de verba, o resultado seria null.
ID BENEFICIOS VARIAVEIS REMUNERACAO FIXA
30444 500 700 300
25879 250 900 NULL
304879 100 300 350
99875 600 Null 300
Att
select sum(fm.valor(case when vda.valor = 'BENEFICIOS[+]' then 1 else 0 end)) as BENEFICIOS
,sum(fm.valor(case when vda.valor = 'REMUNERACAO FIXA[+]' then 1 else 0 end)) as REMUNERACAO FIXA
,sum(fm.valor(case when vda.valor = 'VARIAVEIS[+]' then 1 else 0 end)) as VARIAVEIS
from funcionario_movimentos fm
inner join verbas v
on fm.cod_verba = v.codigo
left outer join verba_dado_adicional vda
on fm.cod_verba = vda.cod_verba
and vda.tdav_codigo = 189
and vda.data >= trunc(sysdate)
where fm.id_funcionario = 3048766
and fm.ano_competencia = 2019
and fm.mes_competencia = 09
group by
Geovani Brovine
Curtir tópico
+ 0
Responder
Posts
22/11/2019
Emerson Nascimento
publique a estrutura e algum de conteúdo de todas as tabelas envolvidas.
Responder
Clique aqui para fazer login e interagir na Comunidade :)