IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Requête pour trouver des doublons


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 261
    Points : 113
    Points
    113
    Par défaut Requête pour trouver des doublons
    Bonjour,

    Je suis débutant sur tout ce qui concerne le Sql.

    J'ai vu sur ce site un tuto présentant la recherche des doublons.

    http://sqlpro.developpez.com/cours/doublons/

    J'ai essayé sur ma base Oracle que j'ai au boulot et cela ne marche pas.

    J'ai comme champs,

    numdossier, dateexec, numintervention

    Dans ma table il se trouve que j'ai pour un même dossier, deux interventions à la même date.

    Par exemple:
    001250,01/01/2012 23:48:00,100
    001250,01/01/2012 23:48:01,101

    Ce que je cherche à faire c'est retrouver tous les dossiers ayant en commun la même date d'execution sous le format 01/01/2012 et un numéro d'intervention différent.

    J'utilise SqlDevelopper

    Merci

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Essayez ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      select num_dossier
           , trunc(date_intervention, 'DD') as jour_intervention
        from MaTable
    group by num_dossier
           , trunc(date_intervention, 'DD')
      having count(distinct num_intervention) > 1;
    Edit : correction du code suite à la remarque de punkoff.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 261
    Points : 113
    Points
    113
    Par défaut
    Merci pour ta réponse.

    Excusez moi pour le retard mais j'ai eu la grippe mais tout va bien

    J'ai essayé ta requête mais cela me donne pas tous les résultats escomptés.

    J'ai essayé la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT DISTINCT numdossier, numintervention, dateexec
    FROM ACC A1
    WHERE EXISTS (SELECT *
    	  		 FROM ACC A2
    			 WHERE A1.numintervention <> A2.numintervention
    			 AND A1.dateexec = A2.dateexec)
    			 AND numdossier > '001265000'
    			 AND numdossier < '780000000'
    Mais j'ai un problème au niveau du format de dateexec car je voudrais faire l'égalité au niveau de la date mais pas de la date et l'heure qui peut être légèrement différente.

    Merci d'avance

  4. #4
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Bonjour,

    Pourrais-tu nous mettre un jeu d'essai avec les résultats attendus et résultats réels ?

    Pour la date pour ne pas avoir les heures il faut faire :
    ~ Lola ~

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Je ne sais pas si Waldar a fait une erreur ou pas mais ...
    http://docs.oracle.com/cd/B28359_01/...7.htm#BABCIFGH
    et http://docs.oracle.com/cd/B28359_01/...1.htm#CJAEFAIA


    ca donnerai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      SELECT num_dossier
           , trunc(date_intervention, 'DD') AS jour_intervention
        FROM MaTable
    GROUP BY num_dossier
           , trunc(date_intervention, 'DD')
      HAVING count(DISTINCT num_intervention) > 1;

    Avec un seul 'D' le format tronque la date au 1er jour de la semaine

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Bien vu punkoff, c'est bien une erreur de ma part sur le format du trunc.

    Comme lola06 l'a signalé, l'absence de paramètre sur la fonction trunc fonctionne également :
    If you omit fmt, then date is truncated to the nearest day

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 261
    Points : 113
    Points
    113
    Par défaut
    Merci à tous pour vos réponses

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/06/2014, 12h34
  2. Requête pour rechercher des doublons partiels
    Par jubourbon dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/06/2011, 11h22
  3. Requête pour supprimer des doublons dans une table
    Par nomade333 dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/03/2008, 12h48
  4. requête pour trouver les champs sans doublons
    Par kuhnden dans le forum Access
    Réponses: 2
    Dernier message: 28/03/2008, 18h34
  5. requête pour exclure les doublons.
    Par sam01 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/11/2005, 19h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo