Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
Sou novo aqui no forum e estou necessitando de uma grande ajuda.
Tenho uma sentença SQL aonde estou calculando o saldo de horas de cada funcionário. Aonde o salto total de cada um necessito que calcule o total das horas positivas e negativas do setor.
select distinct
a.NumCad,
a.NomFun,
(sum (case
when c.sinlan = '-' then (c.qtdhor *-1)
else (c.qtdhor *1)
end)) TOTAL
from cadastro a,
horas c
where a.numloc =:CD
and a.NUMEMP = 201
and a.sitafa <> 7
and a.numcad <= 9999
and a.numcad = c.numcad
and datlan between (select MAX(DATCMP) from horas where ORILAN = 'G' and DATCMP <= DATLAN)+1 and :dt_final
group by a.numcad, a.nomfun
Order by a.NomFun
Resultado:
NUMCAD NOMFUN TOTAL
1122 ANDRE 432
3344 JOYCE -491
5566 MARCO 37
1234 MATEUS 103
3131 RODRIGO -157
Então agora necessito pegar os valores desse total e transformar em
POSITIVO = 572
NEGATIVO = - 648
Boa Tarde MOtta,
Cara muito obrigado ai pela ajuda...
Era apenas isso que faltava no meu relatório...
Abraço
use a query como uma tabela virtual
FROM ( select distinct a.NumCad, a.NomFun, (sum (case when c.sinlan = '-' then (c.qtdhor *-1) else (c.qtdhor *1) end)) TOTAL from cadastro a, horas c where a.numloc =:CD and a.NUMEMP = 201 and a.sitafa <> 7 and a.numcad <= 9999 and a.numcad = c.numcad and datlan between (select MAX(DATCMP) from horas where ORILAN = 'G' and DATCMP <= DATLAN)+1 and :dt_final GROUP BY A.numcad, A.nomfun )