- Este tópico contém 6 respostas, 2 vozes e foi atualizado pela última vez 10 anos, 5 meses atrás por diegodcr.
-
AutorPosts
-
25 de junho de 2014 às 9:25 pm #106726diegodcrParticipante
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 2Tentei vários SQL e estou enviando o menos errado:
select distinct pvenda,codprod,codfilial
from tabela
where codfilial not in (3)
order by 2,525 de junho de 2014 às 9:51 pm #106727rmanParticipante@diegodcr
Você quer mostrar os dados da outras filiais dado uma filial?
select pvenda,codprod,codfilial
from tabela
minus
select pvenda,codprod,codfilial
from tabela
where codfilial = 3
25 de junho de 2014 às 10:42 pm #106728diegodcrParticipante[quote=”rman” post=32135]@diegodcr
Você quer mostrar os dados da outras filiais dado uma filial?
[/quote]
select pvenda,codprod,codfilial
from tabela
minus
select pvenda,codprod,codfilial
from tabela
where codfilial = 3
Quero que o SQL retorne somente as linhas que tem preços diferentes.
EX: filial 1 tem codprod 1 com preço 1 e filial 2 tem codprod 1 com preço 225 de junho de 2014 às 11:14 pm #106729rmanParticipante@diegodcr
Agora entendi. Caso um produto tenta preço diferente em qualquer filial a consulta abaixo vai trazer.
select pvenda,codprod,codfilial
from tabela
minus
select t1.pvenda,t1.codprod,t1.codfilial
from tabela t1
left join tabela t2 on t2.pvenda = t1.pvenda and t2.pcodprod = t1.pcodprod and t1.codfilial t2.codfilial
25 de junho de 2014 às 11:28 pm #106730diegodcrParticipante[quote=”rman” post=32137]@diegodcr
Agora entendi. Caso um produto tenta preço diferente em qualquer filial a consulta abaixo vai trazer.
[/quote]
select pvenda,codprod,codfilial
from tabela
minus
select t1.pvenda,t1.codprod,t1.codfilial
from tabela t1
left join tabela t2 on t2.pvenda = t1.pvenda and t2.pcodprod = t1.pcodprod and t1.codfilial t2.codfilial
O seu SQL não resultou em nada, e tem preço diferente pro mesmo produto entre as filiais…
25 de junho de 2014 às 11:51 pm #106731rmanParticipante@diegodcr
Montei um teste aqui. Verifica se é isso.
CREATE TABLE TABELA (
CODFILIAL NUMBER
,CODPROD NUMBER
,PVENDA NUMBER(10,2)
);INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,1,10.50);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,1,5.50);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,1,5.50);INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,2,3);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,2,3);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,2,3);INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,3,10);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,3,20);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,3,30);INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,4,10);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,5,20);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,6,30);
COMMIT;
SELECT *
FROM TABELA
WHERE CODPROD IN(
SELECT CODPROD
FROM TABELA
GROUP BY CODPROD,PVENDA
HAVING COUNT(*) < (SELECT COUNT(DISTINCT CODFILIAL) FROM TABELA)
);
26 de junho de 2014 às 12:38 am #106732diegodcrParticipante[quote=”rman” post=32139]@diegodcr
Montei um teste aqui. Verifica se é isso.
CREATE TABLE TABELA (
CODFILIAL NUMBER
,CODPROD NUMBER
,PVENDA NUMBER(10,2)
);INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,1,10.50);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,1,5.50);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,1,5.50);INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,2,3);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,2,3);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,2,3);INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,3,10);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,3,20);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,3,30);INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(1,4,10);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(2,5,20);
INSERT INTO TABELA(CODFILIAL,CODPROD,PVENDA) VALUES(3,6,30);
COMMIT;
SELECT *
FROM TABELA
WHERE CODPROD IN(
SELECT CODPROD
FROM TABELA
GROUP BY CODPROD,PVENDA
HAVING COUNT(*) < (SELECT COUNT(DISTINCT CODFILIAL) FROM TABELA)
);
[/quote]PERFEITO!!
Agora sim muito obrigado! -
AutorPosts
- Você deve fazer login para responder a este tópico.