Dados diferentes

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
diegodcr
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 17
Registrado em: Ter, 09 Nov 2010 2:46 pm
Localização: cachoeiro de itapemirim - es

Boa tarde pessoal!!
Tenho uma tabela que contém codprod,pvenda e codfilial entretanto as informações aparecem 3 vezes por conta da quantidade de filial que são 3.
Preciso pegar somente as linhas que contém pvenda diferente com sua respectiva filial e não igual conforme resultado abaixo:

pvenda codprod codfilial
1,19 1 1
1,19 1 2

Tentei vários SQL e estou enviando o menos errado:

select distinct pvenda,codprod,codfilial
from tabela
where codfilial not in (3)
order by 2,5
Avatar do usuário
tiago_pimenta
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 213
Registrado em: Qua, 29 Jun 2011 9:49 am
Localização: Barretos / SP

Se eu entendi certo, você quer pegar os registros onde pvenda é diferente da filial ? Se for isso, acho que é o select abaixo:

Selecionar tudo

select distinct pvenda,codprod,codfilial
from tabela
where pvenda <> codfilial
order by 2,5
diegodcr
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 17
Registrado em: Ter, 09 Nov 2010 2:46 pm
Localização: cachoeiro de itapemirim - es

tiago_pimenta escreveu:Se eu entendi certo, você quer pegar os registros onde pvenda é diferente da filial ? Se for isso, acho que é o select abaixo:

select distinct pvenda,codprod,codfilial
from tabela
where pvenda <> codfilial
order by 2,5
Nãp é isso, preciso que exiba somente as linhas que contiverem preços diferentes com filiais diferentes para os mesmos produtos
Avatar do usuário
tiago_pimenta
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 213
Registrado em: Qua, 29 Jun 2011 9:49 am
Localização: Barretos / SP

Existe a possibilidade de ter dois produtos (codprod) para a mesma filial (codfilial) ?
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

O que poderia ser feito seria uma consulta que traria as informações filial/produto/valor, o que isso você já possui, e fazer um pivoteamento com as filiais(ou seja, transformar cada filial em uma coluna). Assim seria mais fácil verificar preços diferentes para mesmo produto.

Outra forma seria fazer um subselect na consulta como condição "WHERE EXISTS" onde teria os filtros:

Selecionar tudo

select * from tabela fora
WHERE EXISTS(SELECT 1 FROM tabela interna
WHERE interna.produto = fora.produto
AND interna.filial = fora.filial
AND interna.preço = fora.preço)
Apesar de que quando tiver diferença nos valores irá trazer todas linhas do produto/filial, não apenas a que está "diferente".
Responder
  • Informação
  • Quem está online

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