Restrição em duas colunas de uma mesma tabela

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Andressa_cpd
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Dom, 29 Set 2019 12:05 pm

Hola a todos!

Preciso realizar uma consulta em uma tabela onde preciso restringir dois dados de colunas diferente, porem quando faço isso um anula o outro.

Selecionar tudo

select j.estcd, j.estloja, j.*
  from produtoempresa j
 where j.codproduto in (select w.codproduto
                          from desev.produto w
                         where w.codproduto > 0)
   and j.empresa in
       (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
   and j.estcd > 0
   and j.statuscompra <> 'A'
Eu preciso que me retorne dados, quando a coluna j.estcd seja maior que zero, e a coluna j.statuscompra seja diferente de 'A', porem o que acontece: a coluna j.estcd está associada a empresa 10 pois ela é a unica onde o estoque fica gravado nesta coluna, as demais empresa ficam na j.estloja, já a coluna j.statuscompra é para todas as empresas, então quando eu coloco esta restrição o sistema entendo que só estou trabalhando com a empresa 10 e ai só me trás os dados dela.
Ex: eu tenho o produto 10, ele tem estoque no CD e o status de compra no CD é 'A' e nas lojas é 'I', então eu queria que este produto retornasse na consulta.
Já tentei incluir a mesma tabela duas vezes com alias diferente para tratar os campos e mesmo assim não tive sucesso.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Acho que só está faltando você literalmente colocar no SQL o que você precisa.
Algo assim:

Selecionar tudo

where ( ( estcd = 10 and statuscompra ='A')
        or  
        ( estcd <>10 and statuscompra ='I')
      )
Vai retornar statuscompra A quando o ESTCD=10
E vai retornar statuscompra I quando ESTCD não for 10.

Então, eu não sei como que é sua tabela.
Talvez você queira mudar a segunda linha pra

Selecionar tudo

( estloja is NOT NULL and StatusCompra ='I' )
Manda um exemplo de dados que você tem, e como você quer que retorne que fica mais fácil de entender.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 18 visitantes