Página 1 de 1

select com divergencia de preço

Enviado: 02 Out 2024 13:54
por Amparo
Ola amigos

boa tarde

estou batendo a cabeça para montar um select simples porem nada funciona (acho que é a idade)
tenho um tabela de itens de pedido com os seguintes campos:
pedido, cliente, produto, vlr_unitario etc

na tabela tenho alguns registros

pedido cliente produto vlr_unitario
4592 2255 caneta azul bic 1.20
4592 2255 agua mineral 1.50
4567 2255 caneta azul bic 1.20
4567 2255 agua mineral 1.50
4533 2255 caneta azul bic 1.22
4529 2255 caneta azul bic 1.20
4508 2255 caneta azul bic 1.25

preciso montar um select pegando apenas os pedidos que tenham os produtos iguais porem somente com valores diferentes.
deveria mostrar por exemplo somente o pedido 4592, 4533 e 4508 cujo o produto esta com valores diferentes

tentei montar um select +/- assim mas ele mostra todos os produtos e eu queria que mostrasse apenas os que estão com valores diferentes

SELECT A.PEDIDOS, A.UNITARIO, B.CODIGO, B.DESCRICAO
FROM ITENS_PEDIDOS AS A
LEFT JOIN PRODUTOS AS B ON(A.CE_PRODUTOS = B.ID_PRODUTOS)
WHERE IDPEDIDOS IN ('031929','031930','031931','031932')
GROUP BY UNITARIO ORDER BY produtos;


abraço

select com divergencia de preço

Enviado: 27 Out 2024 09:26
por SOSSOFT
O ideal é agrupar os produtos por pedido e verificar se há mais de um valor distinto para cada produto

Código: Selecionar todos

SELECT pedido
FROM ITENS_PEDIDOS
GROUP BY cliente, produto
HAVING COUNT(DISTINCT vlr_unitario) > 1;
Essa consulta retorna os pedidos que têm pelo menos um produto com valores diferentes. Para listar os pedidos específicos, você pode fazer um JOIN com a tabela original

Código: Selecionar todos

SELECT DISTINCT A.pedido
FROM ITENS_PEDIDOS A
JOIN (
    SELECT cliente, produto
    FROM ITENS_PEDIDOS
    GROUP BY cliente, produto
    HAVING COUNT(DISTINCT vlr_unitario) > 1
) B ON A.cliente = B.cliente AND A.produto = B.produto;
Esse código primeiro identifica quais produtos de um cliente têm valores diferentes e, em seguida, usa essa informação para selecionar os pedidos correspondentes

A pergunta é, será que é isso que precisa? Funciona para o seu caso?