none
Colocar CASE nessas condiçoes RRS feed

  • Pergunta

  • Prezados boa noite!!

    Vejam a SQL Abaixo

     
    SELECT  CASE WHEN (MTRFMED.VALORMEDIDO) IS NULL
                THEN  ROUND (MTRFMED.QUANTIDADEMEDIDA * MITMCNT.VALORATUAL,2)
                ELSE  MTRFMED.VALORMEDIDO
           END
    ,     CASE  WHEN  MTRFMED.QUANTIDADEMEDIDA IS NULL
                THEN  ROUND (MTRFMED.VALORMEDIDO / MITMCNT.VALORATUAL,2)
                ELSE  MTRFMED.QUANTIDADEMEDIDA
          END 
       FROM MTRFMED  /* MEDICAO POR PERIODO */
          JOIN MPDO ON MPDO.IDPRJ = MTRFMED.IDPRJ AND MPDO.IDCNT =  MTRFMED.IDCNT
                 AND    MPDO.PERIODOMED = MTRFMED.PERIODOMED
      JOIN MITMCNT ON MITMCNT.IDPRJ = MTRFMED.IDPRJ AND MITMCNT.IDITMCNT = MTRFMED.IDITMCNT
                 AND MITMCNT.IDCNT =  MTRFMED.IDCNT
    WHERE   MTRFMED.IDPRJ = '1475'

    preciso da mesma SQL porem com o SUM, não estou sabendo aonde incluir o mesmo.

    Obrigado a todos pela ajuda..

    quarta-feira, 3 de julho de 2013 21:33

Todas as Respostas

  • Boa noite,

    Ronnie, experimente colocar o Case dentro do Sum:

    SELECT
        SUM(
            CASE WHEN (MTRFMED.VALORMEDIDO) IS NULL
                THEN  ROUND (MTRFMED.QUANTIDADEMEDIDA * MITMCNT.VALORATUAL,2)
                ELSE  MTRFMED.VALORMEDIDO
            END) AS Soma1,
        SUM(
            CASE  WHEN  MTRFMED.QUANTIDADEMEDIDA IS NULL
                THEN  ROUND (MTRFMED.VALORMEDIDO / MITMCNT.VALORATUAL,2) 
                ELSE  MTRFMED.QUANTIDADEMEDIDA
            END) AS Soma2

    Espero que ajude.


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

    quarta-feira, 3 de julho de 2013 21:44
  • Deleted
    quarta-feira, 3 de julho de 2013 22:26
  • Só completando.

    Nesse caso de tratamento de NULOS, melhor usar o ISNULL.

    Use o CASE para tratamentos complexos, o COALESCE para tratar valores válidos e o ISNULL para nulos.

    Como o José Diniz sabiamente disse, pode usar os dois, mas nesse caso o ISNULL é bem mais performático.

    Até mais.


    Antero Marques

    quinta-feira, 4 de julho de 2013 11:20