none
Dúvida em uma Where RRS feed

  • Pergunta

  • Pessoal boa tarde,

    Estou com uma dúvida e não sei nem como procurar aqui...

    Por exemplo preciso fazer select em uma tabela que depende do resultado de uma coluna é um tipo de where 

    Primeiro nem sei se é possível...

    Por exemplo

    select * from cte01 where st = 'I' tenho uma coluna chamado tomador3 onde que esse campo pode vir com os valores 0, 1, 2, 3 ou 4

    Se o tomador3 no registro tal for igual a 0 tem que ser select * from cte01 where st = '1' and codr4 = 1

    Se o tomador 3 no registro tal for igual a 4 tem que ser select * from cte01 where st = 'I' and codd7 = 1

    É possível eu fazer esse tipo de select?

    Desde já agradeço


    Wagner_fix

    segunda-feira, 16 de outubro de 2017 19:11

Respostas

Todas as Respostas

  • Deleted
    • Marcado como Resposta Wagner_fix sexta-feira, 20 de outubro de 2017 18:38
    segunda-feira, 16 de outubro de 2017 22:17
  • Fala Wagner, tudo bem?

    Nao sei se voce ja resolveu seu problema e, nem se sua duvida é exatamente o que eu entendi, mas voce poderia tentar usando o CASE no seu WHERE.

    Ex:

    select * from cte01 where tomador3 = case when tomador3 = 0 then (select * from cte01 where st = '1' and codr4 = 1) else...

    Tenta algo nesse caminho ou da uma pesquisada.

    Qualquer duvida a mais posta ai.

    Abs,

    Ricardo

    terça-feira, 17 de outubro de 2017 14:52
  • Fala Wagner, tudo bem?

    Nao sei se voce ja resolveu seu problema e, nem se sua duvida é exatamente o que eu entendi, mas voce poderia tentar usando o CASE no seu WHERE.

    Ex:

    select * from cte01 where tomador3 = case when tomador3 = 0 then (select * from cte01 where st = '1' and codr4 = 1) else...

    Tenta algo nesse caminho ou da uma pesquisada.

    Qualquer duvida a mais posta ai.

    Abs,

    Ricardo

    fiz um teste de simulacao "do que eu entendi na sua duvida" aqui e deu retorno, so nao sei se e o que voce precisa:

    select top 10 IdCliente from [dbo].[379_DadosCliente]
     where IdCliente = case when IdCliente >= 1000 
    then (select IdCliente from [dbo].[379_DadosCliente] 
    where IdLista = 1000 and CodCampanha = 1000
    group by IdCliente) 
    else IdCliente
    end
    group by IdCliente

    Result: IdCliente

                 1

    terça-feira, 17 de outubro de 2017 16:06
  • Pessoal boa tarde...

    Primeiramente gostaria de agradecer a todos que tentaram me ajudar de alguma maneira.

    Mas esse select já resolveu os meus problemas.

    Muito obrigado @José Diz pelo código.

    Abraço,

    Wagner


    Wagner_fix

    sexta-feira, 20 de outubro de 2017 18:39