Instrução SQL para registros duplicados
Caros amigos ,
Gostaria de montar uma instrução SQL que me retorne todos os
registros da Tabela A que estejam com o mês e o ano repetido fazendo
um join com a tabela B. Ou seja preciso achar os registro com mês / Ano Repetidos.
Tabela A
COD_A CONTA MES ANO
TABELA B
COD_B COD_A ENDERECO
Gostaria de montar uma instrução SQL que me retorne todos os
registros da Tabela A que estejam com o mês e o ano repetido fazendo
um join com a tabela B. Ou seja preciso achar os registro com mês / Ano Repetidos.
Tabela A
COD_A CONTA MES ANO
TABELA B
COD_B COD_A ENDERECO
Marcos.rio
Curtidas 0
Respostas
Sremulador
04/01/2005
você pode utilizar o extrac (month, day, year) e fazer um agrupamento...
GOSTEI 0
Andremuller
04/01/2005
não ficou 100¬ clara a tua intenção, mas talvez tu possas aproveitar tudo ou algo da idéia
SELECT * FROM TABLEA A1, TABLEB B WHERE A1.COD_A = B.COD_A AND EXISTS( SELECT MES, ANO, COUNT(COD_A) FROM TABLEA A2 WHERE A1.MES = A2.MES AND A1.ANO = A2.ANO GROUP BY MES, ANO HAVING COUNT(COD_A) > 1 )
GOSTEI 0
Marcos.rio
04/01/2005
Obrigado pela ajuda amigo.. realmente era mais ou menos isso que eu estava fazendo, porém está me retornando uma quantidade irreal de registro... eram pra ser 1445 e ele me traz 125.3456... Vou procurar onde está o erro na consulta.... mesmo assim obrigado pela dica !
Abs
Abs
GOSTEI 0
Andremuller
04/01/2005
provavelmente há lagum erro na ligação das chaves porque isso é característico de um produto cartesiano.
GOSTEI 0
Adilsond
04/01/2005
Com base no sql do Andre e caso sua base seja oracle (não sei se funciona com IB/FB).
SELECT * FROM TABLEA A1, TABLEB B WHERE A1.COD_A = B.COD_A AND (A1.COD_A, A1.MES, A1.ANO) IN (SELECT A2.COD_A, A2.MES, A2.ANO FROM (SELECT A3.COD_A, A3.MES, A3.ANO, COUNT(*) FROM TABLEA A3 GROUP BY A3.COD_A, A3.MES, A3.ANO HAVING COUNT(*) > 1) A2)
GOSTEI 0
Marcos.rio
04/01/2005
Ok.. testei porém deu erro no:
(Campo1, Campo2, Caqmpo3) In (Select ...... Etc...
Mesmo assim continuo com o meu sofrimento....
Obrigado pela ajuda !
(Campo1, Campo2, Caqmpo3) In (Select ...... Etc...
Mesmo assim continuo com o meu sofrimento....
Obrigado pela ajuda !
GOSTEI 0
Andremuller
04/01/2005
tu não conseguiu resolver tua dúvida ainda?
Eu criei uma base aqui e testei a sql que te mandei e ela funciona perfeitamentamente.
Basicamente ela faz o seguinte: selecione tudo de TableA e TableB onde mes e ano de TableA estejam duplicados.
Digamos que TableA tenha o seguinte
e tableB
o resultado será de 3 registros da combinação de COD_A(1, 2) e COD_B(1,2,3).
Se a tua intensão é não repetir os COD_A então coloque um distinct na SQL não selecionado COD_B. Resolveu?
Eu criei uma base aqui e testei a sql que te mandei e ela funciona perfeitamentamente.
Basicamente ela faz o seguinte: selecione tudo de TableA e TableB onde mes e ano de TableA estejam duplicados.
Digamos que TableA tenha o seguinte
COD_A MES ANO 1 2 2000 2 2 2000 3 1 2000
e tableB
COD_B COD_A MES ANO 1 1 2 2000 2 1 2 2000 3 2 2 2000 4 3 2 2000
o resultado será de 3 registros da combinação de COD_A(1, 2) e COD_B(1,2,3).
Se a tua intensão é não repetir os COD_A então coloque um distinct na SQL não selecionado COD_B. Resolveu?
GOSTEI 0