Help - SQL Case When - SUM

22/11/2019

6

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
Responder

Posts


publique a estrutura e algum de conteúdo de todas as tabelas envolvidas.


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar