Select com dados duplicados
20/01/2016
0
Estou com um select retornando dados duplicados e ainda não consegui uma solução:
SELECT ITENS.ite_ordem_compra, ITENS.ite_entrada, ITENS.ite_custo_atual, APAGAR.APA_DUPLICATA, APAGAR.apa_razao_social
FROM ITENS INNER JOIN APAGAR ON ITENS.ite_ordem_compra = APAGAR.APA_ORDEM_COMPRA
WHERE ITENS.ITE_CODIGO_MATERIAL = '113' ORDER BY ITENS.ITE_ORDEM_COMPRA
O Select funciona, mas vem dados duplicados do APAGAR quando as notas do Contas a Pagar tem vários registros com a mesma ordem de compra e
varias duplicatas
OC Entrada custo Duplicata Razao Social
=======================================
0000090 30 12.00 411315/1 Kalunga
0000092 40 13.80 028123/1 C&C
0000092 40 13.80 028123/2 C&C (Esse registro não era para sair, por ser mais de 1 duplicatas no Ctas a Pagar)
0000097 20 14.00 040765/1 Casa & Video
Alguém teria uma idéia de como retirar estes registros duplicados vindo do APAGAR ?
Grato pela atenção.
Marcelo
Posts
20/01/2016
Huidemar Costa
exemplo
Select DISTINCT
campo1,
campo2......
20/01/2016
Marcelo
Já tentei tanta coisa e não funcionou, teria como montar este select para saber como funciona
esta sintaxe?
20/01/2016
Huidemar Costa
SELECT DISTINCT ITENS.ite_ordem_compra, ITENS.ite_entrada, ITENS.ite_custo_atual, APAGAR.APA_DUPLICATA, APAGAR.apa_razao_social FROM ITENS INNER JOIN APAGAR ON (ITENS.ite_ordem_compra = APAGAR.APA_ORDEM_COMPRA) WHERE ITENS.ITE_CODIGO_MATERIAL = '113' ORDER BY ITENS.ITE_ORDEM_COMPRA
20/01/2016
Marcelo
:-(
20/01/2016
Marcos P
O DISTINCT, obrigatoriamente, tem de resolver isso aí !
Senão resolveu é porque existem colunas que você está incluindo no SELECT que ainda estão gerando valores diferentes...
Faça um teste simples... usando a query do Huidemar deixe o DISTINCT e apenas a coluna ITENS.ite_ordem_compra.
Continuam aparecendo duplicações ?
Se sim, crie a estrutura de dados no SqlFiddle, crie a estrutura de dados, popule as tabelas e volte aqui... que tento lhe ajudar com o JOIN.
Se não, vá acrescentando as colunas na query uma-a-uma até achar aquela que está desempatando seu DISTINCT.
Ok ?!?
20/01/2016
Huidemar Costa
para isso você pode fazer mais ou menos assim:
SELECT DISTINCT ITENS.ite_ordem_compra, ITENS.ite_entrada, ITENS.ite_custo_atual, (select first 1 APA_DUPLICATA from apagar where APA_ORDEM_COMPRA=ITENS.ite_ordem_compra order by apa_duplicata) apa_duplicata, APAGAR.apa_razao_social FROM ITENS INNER JOIN APAGAR ON (ITENS.ite_ordem_compra = APAGAR.APA_ORDEM_COMPRA) WHERE ITENS.ITE_CODIGO_MATERIAL = '113' ORDER BY ITENS.ITE_ORDEM_COMPRA
Acredito que deve ser isto que você quer...
Deve existir outra maneira, no entanto, não consigo pensar em outra, mas, veja se é isso o que você precisa.
21/01/2016
Marcelo
da emissão, etc...
Mas seu exemplo não funcionou, deu erro neste FIRST 1. (Incorrect syntax near '1'.) Não funciona com TOP também.
Removendo este first 1, da outro erro:
Msg 1033, Level 15, State 1, Line 5
The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified.
Também não consegui detectar o que estar "herrado"... :-(
21/01/2016
Fabiano Carvalho
SELECT ITENS.ite_ordem_compra, ITENS.ite_entrada, ITENS.ite_custo_atual, APAGAR.APA_DUPLICATA, APAGAR.apa_razao_social FROM ITENS INNER JOIN (SELECT ROW_NUMBER() OVER(PARTITION BY APA_ORDEM_COMPRA ORDER BY APA_ORDEM_COMPRA) D,* FROM APAGAR) AS APAGAR ON (ITENS.ite_ordem_compra = APAGAR.APA_ORDEM_COMPRA) WHERE ITENS.ITE_CODIGO_MATERIAL = '113' AND APAGAR.D = 1 ORDER BY ITENS.ITE_ORDEM_COMPRA
21/01/2016
Fabiano Carvalho
Veja mais sobre Funcoes de Classificacao
21/01/2016
Marcelo
Como disse na mensagem anterior, não funcionou...
Após alguns testes neste tal de Sqlfidle, consegui fazer a estrutura e os dados nos 2 arquivos, e rodei um
select simples neles e apresentou os dados.
E agora? O que fazer para você ter acesso a essa tela? Passar o link?
http://sqlfiddle.com/#!3/1646a/3
Abraços.
21/01/2016
Huidemar Costa
Você precisa do número da Duplicata?
Se não for precisar tire e o sql dverá ficar assim ->
SELECT DISTINCT ITENS.ite_ordem_compra, ITENS.ite_entrada, ITENS.ite_custo_atual, APAGAR.apa_razao_social FROM ITENS INNER JOIN APAGAR ON (ITENS.ite_ordem_compra = APAGAR.APA_ORDEM_COMPRA) WHERE ITENS.ITE_CODIGO_MATERIAL = '113' ORDER BY ITENS.ITE_ORDEM_COMPRA
O problema está na coluna duplicata, veja nesse último SQL eu tirei a coluna duplicata, MAS mantive o DISTINCT.
21/01/2016
Marcos P
Tente as dicas postadas e informe... quem sabe a solução já está no próprio post !
Senão funcionar, partimos para o SqlFiddle.
19/02/2016
Helder
Não sei se já conhecem, mas existe uma plataforma para criação de webservices muito eficiente, basta apenas liberar acesso para o banco de dados, e você pode criar uma nova tabela, um novo campo com apenas um clique, talvez ajude muito vocês.
Fica a indicação do Datasocket.
datasocket.co/free
Clique aqui para fazer login e interagir na Comunidade :)