none
Valor Zero RRS feed

  • 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

    sexta-feira, 5 de agosto de 2016 13:24

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
    ----------------------------------------------------------

    sexta-feira, 5 de agosto de 2016 13:54

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:

    http://guiadba.com.br/funcoes-basicas-parte-1/

    • Sugerido como Resposta Jose Luiz Borges sexta-feira, 5 de agosto de 2016 14:59
    sexta-feira, 5 de agosto de 2016 13:53
  • 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
    ----------------------------------------------------------

    sexta-feira, 5 de agosto de 2016 13:54
  • 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

    sexta-feira, 5 de agosto de 2016 14:53