Não consigo remover dados duplicados
Boa Tarde!
Terminei um SELECT para retornar todos os funcionários da empresa e seus dados. Porém, esta aparecendo dados duplicados.
Sou bem iniciante em sql, mas pesquisei descobri o comando "DISTINCT".
Eu usei o DISTINCT, mas mesmo assim continua com arquivos duplicados. Ai descobri o que esta causando isso, o campo(apelido) "Cônjuge" do funcionário. Só um cadastro de cada funcionário que o tem, ou seja, preciso deletar os cadastros que não tem Cônjuge, que são os duplicados.
*OBS:* Dei um SELECT em apenas um campo (DO_FUNCIONARIOS.NOME), e o DISTINCT funcionou certinho. Não apareceu nenhum nome duplicado.
Segue o select:
SELECT DISTINCT DO_FUNCIONARIOS.NOME AS 'Nome Funcionário', DO_FUNCIONARIOS.CPFNUMERO AS 'CPF',
DO_FUNCIONARIOS.PISNUMERO as 'PIS',
DO_FUNCIONARIOS.CPNUMERO + ' / ' + DO_FUNCIONARIOS.CPSERIE AS 'Cart. Trab com série',
DO_FUNCIONARIOS.DATANASCIMENTO AS 'Data de Nascimento',TA_MUNICIPIOS.NOME AS 'Cidade Nasci.',
TA_ESTADOS.NOME AS 'Estado Nasc.', TA_ESTADOSCIVIS.NOME AS 'Estado Civil',
CASE DO_FUNCIONARIODEPENDENTES.TIPO
when 1 then NULL
when 2 then NULL
when 3 then NULL
when 4 then DO_FUNCIONARIODEPENDENTES.NOME
when 99 then NULL
end as Cônjuge, DO_FUNCIONARIOS.PAI AS 'PAI', DO_FUNCIONARIOS.MAE AS 'MÃE',
DO_FUNCIONARIOS.SEXO, DO_FUNCIONARIOS.RGNUMERO AS 'RG Número',
TA_EMISSORESDOCUMENTOS.NOME AS 'RG Emissor', TA_ESTADOS.SIGLA AS 'RG_UF',
DO_FUNCIONARIOS.RGEMISSAODATA AS '"DOC (Data de emissão)',
CS_CARGOS.TITULO AS 'Cargo', DO_FUNCIONARIOS.DATAADMISSAO as 'Data de Admissão',
DO_FUNCIONARIOENDERECOS.LOGRADOURO AS 'Endereço',
DO_FUNCIONARIOENDERECOS.BAIRRO as 'Bairro',
m.NOME AS 'Cidade',
m2.NOME AS 'Estado',
DO_FUNCIONARIOENDERECOS.CEP,
DO_FUNCIONARIOTELEFONES.DDD, DO_FUNCIONARIOTELEFONES.TELEFONE, DO_FUNCIONARIOS.EMAIL,
TA_NIVEISESCOLARIDADE.NOME AS 'Escolaridade',
DO_FUNCIONARIOS.SALARIOATUAL as 'Salário Atual'
FROM DO_FUNCIONARIOS
INNER JOIN
TA_ESTADOSCIVIS
ON DO_FUNCIONARIOS.ESTADOCIVIL = TA_ESTADOSCIVIS.HANDLE
LEFT JOIN
DO_FUNCIONARIOTELEFONES
ON DO_FUNCIONARIOS.HANDLE = DO_FUNCIONARIOTELEFONES.FUNCIONARIO
INNER JOIN
TA_MUNICIPIOS
ON DO_FUNCIONARIOS.MUNICIPIO = TA_MUNICIPIOS.HANDLE
INNER JOIN
TA_ESTADOS
ON DO_FUNCIONARIOS.ESTADO = TA_ESTADOS.HANDLE
INNER JOIN
CS_CARGOS
ON DO_FUNCIONARIOS.CARGO = CS_CARGOS.HANDLE
INNER JOIN
TA_NIVEISESCOLARIDADE
ON DO_FUNCIONARIOS.NIVELESCOLARIDADE = TA_NIVEISESCOLARIDADE.HANDLE
INNER JOIN
TA_EMISSORESDOCUMENTOS
ON DO_FUNCIONARIOS.RGEMISSOR = TA_EMISSORESDOCUMENTOS.HANDLE
LEFT JOIN
DO_FUNCIONARIOENDERECOS
ON DO_FUNCIONARIOS.HANDLE = DO_FUNCIONARIOENDERECOS.FUNCIONARIO
LEFT JOIN
DO_FUNCIONARIODEPENDENTES
ON DO_FUNCIONARIOS.HANDLE = DO_FUNCIONARIODEPENDENTES.FUNCIONARIO
INNER JOIN (DO_FUNCIONARIOENDERECOS fe INNER JOIN TA_MUNICIPIOS m
ON fe.MUNICIPIO = m.HANDLE)
ON fe.FUNCIONARIO = DO_FUNCIONARIOS.HANDLE
INNER JOIN (DO_FUNCIONARIOENDERECOS fe2 INNER JOIN TA_ESTADOS m2
ON fe2.ESTADO = m2.HANDLE)
ON fe2.FUNCIONARIO = DO_FUNCIONARIOS.HANDLE
ORDER BY DO_FUNCIONARIOS.NOME
O único chato que o "Cônjuge" não tem um nome certo, pois tive que usar um CASE para poder criá-lo do modo que eu queria:
CASE DO_FUNCIONARIODEPENDENTES.TIPO
when 1 then NULL
when 2 then NULL
when 3 then NULL
when 4 then DO_FUNCIONARIODEPENDENTES.NOME
when 99 then NULL
end as Cônjuge
Alguém sabe como posso fazer para remover os dados duplicados deste select?
Obrigado e t++ ^^
Discussão (8)
Carregando comentários...