Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rodrigo-hmsj

Calculando positivos e negativos da soma total

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

use a query como uma tabela virtual

 

 

SELECT (CASE WHEN total < 0 THEN valor ELSE 0 END) negativo,
       (CASE WHEN total >= 0 THEN valor ELSE 0 END) positivo
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
)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.