Usuário com melhor resposta
Como utilizar DISTINCT na minha SELECT

Pergunta
-
BOM DIA . FIZ UMA SELECT:
SELECT vw_rs_entidade_func.codigo_entidade, vw_rs_entidade_func.fantasia_funcionario, vw_rs_entidade.razao_social, vw_rs_entidade.situacao, vw_rs_entidade.id_tipo
FROM vw_rs_entidade INNER JOIN
vw_rs_entidade_func ON vw_rs_entidade_func.razao_social_cliente = vw_rs_entidade.razao_socialQUANDO EXECUTO ESTA QUERY NO SQL TENHO RESULTADOS DUPLICADOS.
COMO QUE EU FAÇO PARA QUE A COLUNA DESTACADA EM CIMA NÃO TENHA DUPLICIDADE?
Respostas
-
Bom Dia,
Possivelmente a coluna razao_social repete, mas para cada repetição deve haver um valor diferente para fantasia_funcionario e isso não é uma repetição.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível- Marcado como Resposta Marcos BLopes terça-feira, 16 de agosto de 2011 13:27
Todas as Respostas
-
Marcos,
Vamos la:
A utilização do distinct é a seguinte:
SELECT DISTINCT SeuCampo1, SeuCampo2, SeuCampo3 FROM SuaTabela
Mas saiba que o distinct trabalha por linha de query, ou seja, ele não ira repetir toda a linha da query cuja qual foi inserida, portanto, segue um exemplo:
Fabrizzio 18 São Paulo
Marcelo 25 São Paulo
Fabrizzio 19 São Paulo
Veja que apesar do Fabrizzio e são paulo se repetir 2 vezes, a idade é diferente, portanto são linhas diferentes e não serão excluidas pelo distinct.
No exemplo acima, para se excluir os 2 Fabrizzio, primeiro voce deve pensar em: O que eu querio de informação? Teoricamente a melhor opção é uma função de agregação com um grup by, vamos supor que eu queira o usuario Fabrizzio com a idade mais avançada, então ficaria:
SELECT Usuario, MAX(Idade), Cidade
FROM SuaTabela
GROUP BY Usuario, Cidade
Tome como regra que todos os campos que não possuem função de agregação devem estar especificados no group by.
Caso isso não seja o sulficiente para trazer o resultado como voce deseja, uma opção é:
Em relação ao distinct principal, a regra continua, mas o que voce faria seria algo mais ou menos assim;
SELECT Distinct SeuCampo, (Subquery 1), (SubQuery2), (Subquery3)
FROM SuaTabela
Ou seja, trabalhar com subqueries, não são muito performaticas e lembre-se que a subquery deve retornar apenas um resultado.
Se voce postar uma massa de dados (Coisa de 5 linhas), e falar como voce quer o resultado, posso te ajudar na query.
Fabrizzio A. Caputo
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
Bom Dia,
Possivelmente a coluna razao_social repete, mas para cada repetição deve haver um valor diferente para fantasia_funcionario e isso não é uma repetição.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.wordpress.com
Classifique as respostas. O seu feedback é imprescindível- Marcado como Resposta Marcos BLopes terça-feira, 16 de agosto de 2011 13:27