none
alterar conteúdo de conluna com resultado igual a NULL RRS feed

  • Pergunta

  • Bom dia!

    Gostaria novamente da ajuda de vocês.

    Bem estou tendo que desenvolver uma view que necessita basicamente das seguintes informações

    Descricao, data, valor,  centrocusto, detalhecc

    consegui fazer essa consulta porém algumas colunas estao apresentando em detalhecc = null e queria substituir isso por "Outros" como poderia fazer?

    Tentei da seguinte forma e mesmo assim continua apresentando o nome null

    SELECT Descricao, data, valor,  centrocusto, detalhecc
      (CASE  WHEN detalhecc = 'NULL' THEN 'OUTROS' ELSE detalhecc  END) as nova_DESC
      FROM dbo.detalheContabil
      LEFT OUTER JOIN cad_corporativo ON Conta  COLLATE DATABASE_DEFAULT  = id_conta  COLLATE DATABASE_DEFAULT
      LEFT OUTER  JOIN cad_corporativo ON item = id_dre_ccorporativo
      WHERE data >= '20160101' AND data <= '20160131'
      ORDER BY ORDEM 

    Resultado que esta sendo mostrado:

    Descricao ---    data     --- valor --- detalhecc

    abc         ---   20160101--- 50 --- lucro

    abcde  ---- 20160102  ---100 --- NULL

    ....

    Como queria que aparecesse:

    Descricao ---    data     --- valor --- detalhecc

    abc         ---   20160101--- 50 --- lucro

    abcde  ---- 20160102  ---100 --- Outros


    terça-feira, 8 de novembro de 2016 18:08

Respostas

  • Carine, 

    Para definir um valor alternativo em caso de valor nulo, use a função COALESCE (https://msdn.microsoft.com/pt-br/library/ms190349(v=sql.110).aspx).

    SELECT Descricao, data, valor,  centrocusto, COALESCE(detalhecc, 'OUTROS') as nova_DESC
      FROM dbo.detalheContabil
      LEFT OUTER JOIN cad_corporativo ON Conta  COLLATE DATABASE_DEFAULT  = id_conta  COLLATE DATABASE_DEFAULT
      LEFT OUTER  JOIN cad_corporativo ON item = id_dre_ccorporativo
      WHERE data >= '20160101' AND data <= '20160131'
      ORDER BY ORDEM 


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    terça-feira, 8 de novembro de 2016 18:12

Todas as Respostas

  • Carine, 

    Para definir um valor alternativo em caso de valor nulo, use a função COALESCE (https://msdn.microsoft.com/pt-br/library/ms190349(v=sql.110).aspx).

    SELECT Descricao, data, valor,  centrocusto, COALESCE(detalhecc, 'OUTROS') as nova_DESC
      FROM dbo.detalheContabil
      LEFT OUTER JOIN cad_corporativo ON Conta  COLLATE DATABASE_DEFAULT  = id_conta  COLLATE DATABASE_DEFAULT
      LEFT OUTER  JOIN cad_corporativo ON item = id_dre_ccorporativo
      WHERE data >= '20160101' AND data <= '20160131'
      ORDER BY ORDEM 


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    terça-feira, 8 de novembro de 2016 18:12
  • Obrigada já estava vindo aqui colocar a resposta rs..

    Tbm consegui colocanco isnull (detalhecc, 'Outros').

    Obrigada!

    terça-feira, 8 de novembro de 2016 18:23
  • Apenas para documentação e conhecimento de todos, embora no seu caso ambos funcionem, COALESCE e ISNULL podem ter resultados diferentes, mas aí é conversa para outra thread.

    Documentação: https://msdn.microsoft.com/en-us/library/ms190349.aspx?f=255&mspperror=-2147217396#Anchor_5


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    terça-feira, 8 de novembro de 2016 18:27