none
Consulta com condição (case ou if) RRS feed

  • Pergunta

  • Boa tarde Pessoal,

    Estou montando uma consulta onde ela deve consultar a condição de um campo para executar o calculo e retornar o dados, mais ou menos assim;

    Seleciona código,nome,quantidade,valor, conv

    se conv for <> de null, valor / (quantidade * conv)  as média

    se não valor / quantidade as média 

    from ....

    Qual é a melhor maneira de testar um campo e retornar na pesquisa?

    sexta-feira, 2 de março de 2018 20:02

Respostas

  • Boa tarde,

    Nesse caso acho que você poderia utilizar a função IsNull ou Coalesce para fazer o calculo quando o valor é nulo:

    valor / (quantidade * IsNull(conv, 1)) as média

    Espero que ajude


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

    sexta-feira, 2 de março de 2018 20:16
  • Bom dia , a proposta do gapimex , está correta , veja que qualquer numero multiplicado por 1 e ele mesmo.

    veja um exemplo 

    DECLARE @Exemplo TABLE (
        Codigo INT,
        Nome VARCHAR(10),
        Quantidade INT,
        Valor DECIMAL(18, 2),
        Conv INT)
    
    INSERT INTO @Exemplo
    VALUES (1, 'Arroz', 15, 15, NULL),
    (2, 'Feijão', 15, 15, 2)
    
    
    SELECT E.Codigo,
           E.Nome,
           E.Quantidade,
           E.Valor,
           E.Conv,
           média = E.Valor / (E.Quantidade * ISNULL(E.Conv, 1)),
           [Assim tambem funciona] = CASE
                                          WHEN E.Conv IS NOT NULL THEN E.Valor / (E.Quantidade * E.Conv)
                                          ELSE E.Valor / E.Quantidade END
      FROM @Exemplo AS E

    Wesley Neves - Brasilia-DF     

    https://wesleyneves.wordpress.com/

    SELECT Tab.[that's me:]

    FROM

    (

        VALUES

            ('Wesley Neves'),

            ('Analista.NET'),

            ('Pós Graduando em Banco de Dados com ênfase em BI'),

            ('MTA -SQL Server'),

            ('MTA -Web Developed')

    ) AS Tab ("that's me:");


    "Se a resposta for útil ou ajudar ,não esqueça de marcar"





    Wesley Neves

    • Marcado como Resposta Leandro HG segunda-feira, 5 de março de 2018 14:30
    segunda-feira, 5 de março de 2018 11:12

Todas as Respostas

  • Boa tarde,

    Nesse caso acho que você poderia utilizar a função IsNull ou Coalesce para fazer o calculo quando o valor é nulo:

    valor / (quantidade * IsNull(conv, 1)) as média

    Espero que ajude


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

    sexta-feira, 2 de março de 2018 20:16
  • Lucio, 

    mas a sintaxe do "se", junto com os campos nesse caso está correto?

    segunda-feira, 5 de março de 2018 10:46
  • Bom dia , a proposta do gapimex , está correta , veja que qualquer numero multiplicado por 1 e ele mesmo.

    veja um exemplo 

    DECLARE @Exemplo TABLE (
        Codigo INT,
        Nome VARCHAR(10),
        Quantidade INT,
        Valor DECIMAL(18, 2),
        Conv INT)
    
    INSERT INTO @Exemplo
    VALUES (1, 'Arroz', 15, 15, NULL),
    (2, 'Feijão', 15, 15, 2)
    
    
    SELECT E.Codigo,
           E.Nome,
           E.Quantidade,
           E.Valor,
           E.Conv,
           média = E.Valor / (E.Quantidade * ISNULL(E.Conv, 1)),
           [Assim tambem funciona] = CASE
                                          WHEN E.Conv IS NOT NULL THEN E.Valor / (E.Quantidade * E.Conv)
                                          ELSE E.Valor / E.Quantidade END
      FROM @Exemplo AS E

    Wesley Neves - Brasilia-DF     

    https://wesleyneves.wordpress.com/

    SELECT Tab.[that's me:]

    FROM

    (

        VALUES

            ('Wesley Neves'),

            ('Analista.NET'),

            ('Pós Graduando em Banco de Dados com ênfase em BI'),

            ('MTA -SQL Server'),

            ('MTA -Web Developed')

    ) AS Tab ("that's me:");


    "Se a resposta for útil ou ajudar ,não esqueça de marcar"





    Wesley Neves

    • Marcado como Resposta Leandro HG segunda-feira, 5 de março de 2018 14:30
    segunda-feira, 5 de março de 2018 11:12
  • Ótimo exemplo, agradeço os colegas pela ajuda funcionou certinho.
    segunda-feira, 5 de março de 2018 14:31
  • Veja esse link abaixo, poderá te ajudar.

    http://ecode10.com/artigo/206/Trabalhando-com-STORED-PROCEDURE


    Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.

    Mauricio Junior - Comunidade www.ecode10.com

    segunda-feira, 5 de março de 2018 22:27