Fórum Instrução SQL para registros duplicados #264094

04/01/2005

0

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


Marcos.rio

Marcos.rio

Responder

Posts

04/01/2005

Sremulador

você pode utilizar o extrac (month, day, year) e fazer um agrupamento...


Responder

Gostei + 0

04/01/2005

Andremuller

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
    )



Responder

Gostei + 0

04/01/2005

Marcos.rio

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


Responder

Gostei + 0

04/01/2005

Andremuller

provavelmente há lagum erro na ligação das chaves porque isso é característico de um produto cartesiano.


Responder

Gostei + 0

04/01/2005

Adilsond

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)



Responder

Gostei + 0

05/01/2005

Marcos.rio

Ok.. testei porém deu erro no:
(Campo1, Campo2, Caqmpo3) In (Select ...... Etc...
Mesmo assim continuo com o meu sofrimento....
Obrigado pela ajuda !


Responder

Gostei + 0

05/01/2005

Andremuller

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

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?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar