0
votes

Trouver des valeurs dupliquées avec un dénominateur commun dans Oracle SQL

J'ai besoin de trouver des valeurs dupliquées sur une table DB Oracle db ayant un dénominateur commun. La table est très grande et contient de nombreuses adresses pour de nombreux pays, en vérifiant quelques-unes des villes que j'ai constatées de nombreuses zones en double (quartiers, districts) dans la même ville, j'ai donc besoin de répertorier toutes les zones en double sous la même ville. (même code postal, etc.).

J'ai déjà essayé de nombreuses questions trouvées sur Stackoverflow, pas encore de succès. p>

Par exemple: P>

SELECT
    *
FROM
    TABLE1
WHERE
    SYNONYM = '1'
    AND STATE = 'ENGLAND'
    AND DISTRICT IN (
        SELECT DISTRICT
    FROM
        TABLE1
    GROUP BY
        DISTRICT
    HAVING
        COUNT(*) > 1);


0 commentaires

3 Réponses :


0
votes

Voici ce dont vous avez besoin.

SELECT
  NATION, STATE, CITY, POSTCODE
FROM
  TABLE1
GROUP BY
  (NATION + STATE + CITY + POSTCODE), NATION, STATE, CITY, POSTCODE
HAVING
  COUNT(NATION + STATE + CITY + POSTCODE) > 1
);


1 commentaires

Malheureusement, cela n'a pas fonctionné non plus, vérifié les résultats de vos requêtes manuellement et il n'y a pas de districts en double dans ces villes.



0
votes

GROUPE directement par ces colonnes et recherchez compteur (*) code> est plus que 1 code>: xxx pré>

modifier : STRUT> Considérant votre dernière mise à jour Essayez avec Trim () CODE> Fonction pour la colonne Type de chaîne qui peut avoir des espaces de rubrique ou de fuite: p>

SELECT C, D, E, trim(F) as F
  FROM TABLE1
 GROUP BY C, D, E, trim(F)
HAVING COUNT(*) > 1


3 commentaires

Malheureusement, il n'a pas fonctionné, vérifié manuellement des résultats de requête et il n'y a pas de districts en double en leur.


Merci, je l'ai édité un peu et il semble être ce que je cherche! :) Sélectionnez C, D, E, F, Compte (F) de Table1 Group par C, D, E, F Avoir le comptage (*)> 1


Vous êtes la bienvenue @adamh. Avez-vous évalué le nombre (f) de la garniture (F) ..?



0
votes

Si vous souhaitez que les enregistrements, utilisez les fonctions de la fenêtre: xxx

si vous voulez juste que le c / d / / e / f Les valeurs, puis l'agrégation va bien.


3 commentaires

Merci, j'ai aussi essayé cela mais sans chance, je fais peut-être quelque chose de mal. C'est l'erreur que je reçois: ORA-00936: ESPRESSION MANCANTE 00936. 00000 - "Expression manquante" * Cause: * Action:


@Adamh. . . Il n'y a pas d'expression manquante dans cette requête. Voici un dB <> Fiddle qui illustre que le code fonctionne: dbfiddle.uk/....


Merci encore pour votre réponse, j'ai essayé à nouveau et le code fonctionne en fait, mais les résultats affichés sont similaires, pas identiques. Je reçois les mêmes noms de district mais ils sont affichés même s'ils sont dans différentes villes, c'est-à-dire nord à Londres, au nord à Manchester. Cela, bien que la ville fait partie de la requête (comme la nation et l'état / la région).