none
Condições dentro do WHERE

    Pergunta

  •  

    Olá galera...

    Tenho o campo end_correio  que onde recebe o valor 1 e 2, se for 1 ele tras o endereco correspondente, se for 2, a mesma coisa. Porém quando mando executar quero que se o campo estiver com o valor 1, ele traga apenas este endereco , se for <> de 1, no caso 2, ele traga o outro, como posso fazer isso? É possivel colocar um IF dentro do Where?

     

    abs

    sexta-feira, 17 de agosto de 2007 16:23

Todas as Respostas

  • coloca um case

    Select

    case name

    when 0 then status

    when 1 then id

    else 'Campo não aceito'

    end

    from tabela

    where id =X

     

    ve se isso resolve caso contrario joga o select em uma variável e depois de um exec(@variavel)

     

    []s

    sexta-feira, 17 de agosto de 2007 16:31
  •  

    entaum cara, no meu caso, preciso colocar o esta condição no WHERE.
    sexta-feira, 17 de agosto de 2007 16:36
  • coloca o código que vc está fazendo e a strutura da tabela

     

    []s

     

    sexta-feira, 17 de agosto de 2007 16:43
  • Bruno,

     

    IF dentro do Where eu desconheco, mas veja se este exemplo pode ajudar:

     

    Code Snippet

    Create Table #Teste

    (Codigo Int Identity(1,1),

    Endereco VarChar(50))

     

    Insert Into #Teste Values('Rua: Sete')

    Insert Into #Teste Values('Rua: Oito')

    Insert Into #Teste Values('Rua: Nove')

     

    Declare @codigo int

     

    Set @Codigo=1

     

    Select Top 1 Case @Codigo

    When 1 Then (Select Endereco from #Teste Where Codigo = 1)

    Else

    (Select Endereco from #Teste Where Codigo = 2)

    End

    From #teste

     

     

     

    sexta-feira, 17 de agosto de 2007 16:47
  • SET @sql = @sql + ' Select distinct A.associadoid as TEOT, te.telefone as telefone, te.email as "E-mail" 

    from  tblendereco as te, tblassociado A

     where

    te.end_tipo = 1  é este campo,aqui ele tras apenas os caras que tem o tipo de endereco como 1, se tiver 2 quero que traga também. Porém si deixo sem nada ele tras duplicado por causa do email.

     

    sexta-feira, 17 de agosto de 2007 16:56
  • Pode fazer assim tb

     

    declare @sql varchar(2000)

    SET @sql = ''

    SET @sql = @sql + '

    Select distinct A.associadoid as TEOT, te.telefone as telefone, te.email as "E-mail"

    from tblendereco as te, tblassociado A

    where '

    if (select top 1 te.end_tipo from tblendereco ) = 1

    SET @sql = @sql + 'Tipo = XXXXX'

    else

    SET @sql = @sql + 'tipo = YYYYY'

    print @sql

    exec(@sql)

     

     

    []s

    sexta-feira, 17 de agosto de 2007 16:59
  •  

    Estava pensando, esta ideia não vai dar certo porque ele vai trazer apenas os caras que passarem pelo determinado campo . Creio que o melhor seria um loop dentro da procedure mas este eu naum tenho ideia como fazer, alguém tem alguma dica?
    sexta-feira, 17 de agosto de 2007 19:19