Usuário com melhor resposta
Valor Zero

Pergunta
-
Amigos bom dia!
Tenho 2 colunas, 1 com valor original a outra com valor parcial.
Precisa colocar o coluna valor parcial como 0 , pois a mesma esta como NULL.
E depois fazer a conta.
Valor Original - Valor Parcial
SQL
SELECT
VALORORIGINAL,
VALORORIGINAL - (SELECT SUM(FLANBAIXA.VALORBAIXA) FROM FLANBAIXA WHERE FLAN.CODCOLIGADA = FLANBAIXA.CODCOLIGADA AND FLAN.IDLAN = FLANBAIXA.IDLAN) AS VALOR_PARCIAL
FROM FLAN, FCFO, GCCUSTO
WHERE FLAN.CODCOLIGADA = 9
AND FLAN.DATAEMISSAO >= '01/01/2015'
AND FLAN.PAGREC = 1
AND FLAN.STATUSLAN IN( 0, 4)
AND FLAN.CODTDO IN ('NC01','ND01')
AND FLAN.CODCFO = FCFO.CODCFO
AND FLAN.CODCOLCFO = FCFO.CODCOLIGADA
AND GCCUSTO.CODCOLIGADA = FLAN.CODCOLIGADA
Resultado:
Valor original Valor Parcial
5000 NULL
4000 3000
Resultado Esperado
Valor Original Valor Parcial Diferença
5000 0 5000
4000 3000 1000
Obrigado Amigos
Respostas
-
eu faria assim:
SELECT VALORORIGINAL, isnull((SELECT SUM(FLANBAIXA.VALORBAIXA) FROM FLANBAIXA WHERE FLAN.CODCOLIGADA = FLANBAIXA.CODCOLIGADA AND FLAN.IDLAN = FLANBAIXA.IDLAN),0) as VALOR_PARCIAL VALORORIGINAL - isnull((SELECT SUM(FLANBAIXA.VALORBAIXA) FROM FLANBAIXA WHERE FLAN.CODCOLIGADA = FLANBAIXA.CODCOLIGADA AND FLAN.IDLAN = FLANBAIXA.IDLAN),0) AS DIFERENCA FROM FLAN, FCFO, GCCUSTO WHERE FLAN.CODCOLIGADA = 9 AND FLAN.DATAEMISSAO >= '01/01/2015' AND FLAN.PAGREC = 1 AND FLAN.STATUSLAN IN( 0, 4) AND FLAN.CODTDO IN ('NC01','ND01') AND FLAN.CODCFO = FCFO.CODCFO AND FLAN.CODCOLCFO = FCFO.CODCOLIGADA AND GCCUSTO.CODCOLIGADA = FLAN.CODCOLIGADA
a funcao SQL IsNull avalia o conteudo e se for null ela seleciona o segundo parametro:
ISNULL( A,0) - se a for nulo, o resultado é zero... se A for nao nulo o resultado é A.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 9 de agosto de 2016 15:36
Todas as Respostas
-
Ronnie, bom dia.
Utilize o ISNULL na coluna Valor Parcial:
IsNULL (Valor_Parcial, 0)
Neste caso o SQL Server vai substituir todos os valores null por 0.
Segue link com uma demonstração clara da utilização:
- Sugerido como Resposta Jose Luiz Borges sexta-feira, 5 de agosto de 2016 14:59
-
eu faria assim:
SELECT VALORORIGINAL, isnull((SELECT SUM(FLANBAIXA.VALORBAIXA) FROM FLANBAIXA WHERE FLAN.CODCOLIGADA = FLANBAIXA.CODCOLIGADA AND FLAN.IDLAN = FLANBAIXA.IDLAN),0) as VALOR_PARCIAL VALORORIGINAL - isnull((SELECT SUM(FLANBAIXA.VALORBAIXA) FROM FLANBAIXA WHERE FLAN.CODCOLIGADA = FLANBAIXA.CODCOLIGADA AND FLAN.IDLAN = FLANBAIXA.IDLAN),0) AS DIFERENCA FROM FLAN, FCFO, GCCUSTO WHERE FLAN.CODCOLIGADA = 9 AND FLAN.DATAEMISSAO >= '01/01/2015' AND FLAN.PAGREC = 1 AND FLAN.STATUSLAN IN( 0, 4) AND FLAN.CODTDO IN ('NC01','ND01') AND FLAN.CODCFO = FCFO.CODCFO AND FLAN.CODCOLCFO = FCFO.CODCOLIGADA AND GCCUSTO.CODCOLIGADA = FLAN.CODCOLIGADA
a funcao SQL IsNull avalia o conteudo e se for null ela seleciona o segundo parametro:
ISNULL( A,0) - se a for nulo, o resultado é zero... se A for nao nulo o resultado é A.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 9 de agosto de 2016 15:36
-
utilize o ISNULL com o sum.
SELECT VALORORIGINAL, VALORORIGINAL - (SELECT SUM(isnull(FLANBAIXA.VALORBAIXA,0) FROM FLANBAIXA WHERE FLAN.CODCOLIGADA = FLANBAIXA.CODCOLIGADA AND FLAN.IDLAN = FLANBAIXA.IDLAN) AS VALOR_PARCIAL FROM FLAN, FCFO, GCCUSTO WHERE FLAN.CODCOLIGADA = 9 AND FLAN.DATAEMISSAO >= '01/01/2015' AND FLAN.PAGREC = 1 AND FLAN.STATUSLAN IN( 0, 4) AND FLAN.CODTDO IN ('NC01','ND01') AND FLAN.CODCFO = FCFO.CODCFO AND FLAN.CODCOLCFO = FCFO.CODCOLIGADA AND GCCUSTO.CODCOLIGADA = FLAN.CODCOLIGADA