Ir para conteúdo

POWERED BY:

Arquivado

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

blackstore242

Valores Negativos - Base FGTS

Recommended Posts

Pessoal boa tarde ,

 

Estou com um probleminha na minha query e não sei resolver , alguém poderia me ajudar ?

 

 

SELECT SUM(X.DARF) AS DARF FROM (
SELECT ISNULL(SUM(ISNULL(A.BASEFGTS,0) + ISNULL(A.BASEFGTS13,0) + ISNULL(A.BASEFGTSDIFSAL,0))*0.01,0)
AS DARF, MESCOMP AS MES, ANOCOMP AS ANO, NROPERIODO AS RODADA
FROM PFPERFF A
WHERE A.CODCOLIGADA=1
GROUP BY A.MESCOMP, A.ANOCOMP, A.NROPERIODO) X
WHERE X.ANO= 2015_N AND X.MES= 3_N AND X.RODADA=1
Olha só , coisa simples pros feras , eu preciso que os valores negativos da base de fgts não entrem na soma , isso está atrapalhando na composição dos cálculos pois para este fim não posso considerar base negativa , tenho que considerar zero (0)
Como eu faço pessoal ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Sem maiores considerações do problema ....


SELECT SUM(X.DARF) AS DARF FROM (


SELECT ISNULL(SUM(ISNULL(A.BASEFGTS,0) + ISNULL(A.BASEFGTS13,0) + ISNULL(A.BASEFGTSDIFSAL,0))*0.01,0)


AS DARF, MESCOMP AS MES, ANOCOMP AS ANO, NROPERIODO AS RODADA


FROM PFPERFF A


WHERE A.CODCOLIGADA=1


GROUP BY A.MESCOMP, A.ANOCOMP, A.NROPERIODO) X


WHERE X.ANO= 2015_N AND X.MES= 3_N AND X.RODADA=1


and X.DARF > 0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Motta , valeu pelo retorno , mas os valores negativos estão na base de 13 salario , existem várias pessoas positivas e duas pessoas negativas , exemplo :

 

SODLwSG.png

 

 

Desse modo percebeu a diferença nos totais , na query preciso que trate os valores negativos como zero .

 

Valeu , abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde.

 

Deixa eu ver se entendi.

Sua query trás os valores que vc precisa, porém precisa inverter o que é negativo e passar para positivo.

 

Caso seja isso, um case tratando o que for < 0 e multiplicando por -1 resolveria.

 

select case when {campo} < 0 then ({campo} * -1)
else {campo} end

 

Caso eu tenha entendido errado, favor corrigir-me.

 

Outro detalhe, seria jogar o resultado para uma "tabela temporaria" ou variável tipo table (dependendo do volume do retorno) e tratar os dados da forma que lhe é conveniente.

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Cosme , acabei editando a anterior , na realidade preciso que converta para zero .

 

Até tentei fazer o case mas não consegui executar com sucesso , não tenho muito habilidade com SQL .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então

 

SELECT SUM(X.DARF) AS DARF FROM (
SELECT ISNULL(SUM(ISNULL(A.BASEFGTS,0) +
ISNULL( case when A.BASEFGTS13 < 0 then 0 else A.BASEFGTS13 end),0) +
ISNULL(A.BASEFGTSDIFSAL,0))*0.01,0)
AS DARF, MESCOMP AS MES, ANOCOMP AS ANO, NROPERIODO AS RODADA
FROM PFPERFF A
WHERE A.CODCOLIGADA=1
GROUP BY A.MESCOMP, A.ANOCOMP, A.NROPERIODO) X
WHERE X.ANO= 2015_N AND X.MES= 3_N AND X.RODADA=1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o que necessita é somente o valor final do somatório, talvez a sugestão abaixo seja mais simples:

-- código 1
SELECT Sum(case when (BASEFGTS is null or BASEFGTS <= 0) then 0 else BASEFGTS end  + 
           case when (BASEFGTS13 is null or BASEFGTS13 <= 0) then 0 else BASEFGTS13 end  +
           case when (BASEFGTSDIFSAL is null or BASEFGTSDIFSAL <= 0) then 0 else (BASEFGTSDIFSAL * 0.01) end
          ) as DARF
  from PFPERFF
  where CODCOLIGADA = 1 
        and ANO = 2015 and MES = 3 
        and NROPERIODO = 1; 

_____

linkedin.gif José Diz Belo Horizonte, MG - Brasil

Compartilhar este post


Link para o post
Compartilhar em outros sites

Srs .

 

Agradeço todos os envolvidos , realmente foi muito bom os resultados , ontem o Cosme me ajudou demais , falamos pelo Skype e tudo mais . o cara é muito bom .

 

O método do Cosme foi através de tabelas temporárias e tudo , ontem testamos e o valor retornou exatamente o esperado .

 

Entretanto a solução do sr. José Diz foi a que mais se enquadrou na minha necessidade , visto que precisei anexar esse script num relatório de DARF , foi o resultado que melhor atendeu.

 

Valeu Galera , nota 10 esse fórum !!!


Valeu , perfeito !

 

 

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.