none
IF DENTRO DO SELECT RRS feed

  • Pergunta

  • Bom dia! Estou tentando fazer um IF simples dentro do select, mas não estou conseguindo, não sei onde pode estar o erro.

    Esse é o código que estou utilizando:

    SELECT P.CdVend, LEFT(REPLACE(SUM(P.TotPed),'.',','),8)TOTAL_VENDAS, IF(PEDCANCSIT.PEDSIT IS NULL, SUM(P.TotPed),SUM(P.TotPed) - PEDCANCSIT.PEDSIT)
    FROM PedSai P
      INNER JOIN Func F ON (P.CdVend = F.CdUsuario)
      LEFT JOIN (
                 SELECT CDVEND, COUNT(NrPed)CONT_PED_SIT, SUM(TOTPED)PEDSIT
                 FROM PedSai
                  WHERE CAST(DtPed AS DATE) = CAST(DtCancelamento AS DATE) AND CAST(DtCancelamento AS DATE) BETWEEN '2018-01-01' AND '2018-01-31' 
                  GROUP BY CDVEND
                  ) PEDCANCSIT ON (P.CdVend = PEDCANCSIT.CdVend)
    WHERE CAST(DtPed AS DATE)BETWEEN '2018-01-01' AND '2018-01-31' AND DtLibFin IS NOT NULL
    GROUP BY P.CdVend, PEDCANCSIT.PEDSIT

    E o erro que está me apresentando é esse:

    Mensagem 156, Nível 15, Estado 1, Linha 1
    Incorrect syntax near the keyword 'IF'.
    Mensagem 102, Nível 15, Estado 1, Linha 1
    Incorrect syntax near ','.
    Mensagem 102, Nível 15, Estado 1, Linha 9
    Incorrect syntax near 'PEDCANCSIT'.

    É um caso simples, se houver cancelamento, ele deverá subtrair do total.

    Desde já agradeço.


    segunda-feira, 5 de fevereiro de 2018 12:00

Respostas

  • Bom dia,

    Clayton, acho que você poderia utilizar o comando Case mas pelo que entendi acho que você vai conseguir o resultado esperado e de forma mais simples utilizando a função Coalesce ou IsNull para trocar o null por zero.

    Experimente fazer uns testes trocando o trecho do If pelo que segue abaixo:

    SUM(P.TotPed - Coalesce(PEDCANCSIT.PEDSIT, 0))

    Com isso a coluna PEDCANCSIT.PEDSIT poderá ser removida do Group By.

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    segunda-feira, 5 de fevereiro de 2018 12:22

Todas as Respostas