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 avec group by


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 53
    Points : 48
    Points
    48
    Par défaut requête avec group by
    Bonjour,

    Je travail sur oracle 9i.

    j'ai une table qui contient les colonnes suivantes :

    Numero dossier père
    Numero dossier fils
    Date de fin
    motif de fin

    A un numero dossier père correspond plusieurs numéro de dossier fils, date de fin et motif de fin.

    Je souhaite recupérer le motif de fin qui correspond à la date de fin max. Et si il y a plusieurs occurrence contenant une date de fin max, il faut prendre le n° de dossier fils max pour les départager. Le groupement se fait par le numéro de dossier père.

    Comment dois je ecrire ma requête ?

    Merci d'avance.

  2. #2
    Membre actif
    Inscrit en
    Février 2003
    Messages
    182
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 182
    Points : 206
    Points
    206
    Par défaut
    ceci par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select Numero_dossier_père ,motif_fin 
    from tatable a
    where Date_fin =(select max(Date_fin) 
                              from tatable b 
                             where a.Numero_dossier_père=
                                       b.Numero_dossier_père)
    and Numero_dossier_fils=(select max(Numero_dossier_fils) 
                                           from tatable b 
                                           where  a.Numero_dossier_père
                                                    =b.Numero_dossier_père)
    A+

  3. #3
    Membre habitué Avatar de nantais
    Inscrit en
    Juillet 2004
    Messages
    158
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 158
    Points : 192
    Points
    192
    Par défaut
    Salut,

    avec cette requête cette requête ca devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT motif_fin
    FROM ta_table a
    WHERE dossier_fils= (SELECT max(dossier_fils)
                         FROM ta_table b
                         WHERE date_fin=(SELECT MAX(date_fin)
                                 FROM ta_table c
                                 WHERE b.dossier_pere=c.dossier_pere)
                         AND b.dossier_pere=a.dossier_pere)

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Que donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT pere,date_fin,motif,max(fils)
    FROM dossier dos
    WHERE date_fin = (SELECT max(date_fin) FROM dossier dos_max WHERE dos.pere = dos_max.pere)
    GROUP BY pere,date_fin,motif;

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 53
    Points : 48
    Points
    48
    Par défaut
    Merci à tous.

    Ma demande n'était pas assez claire.

    Pour un numéro de dossier pére, je pouvais avoir n numéro de dossier fils, date de fin et motif de fin.
    C'est à dire que j'avais pour 27 numéro de dossier père 365 numéro de dossier fils, date de fin et motid de fin.
    Par exemple pour le 1er numéro de dossier père, j'ai 58 numéro de dossier fils, date de fin et motif de fin.

    Vos requête mon permis d'écrire le requête que je souhaitais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT A.motifdefin FROM MATABLE A
    WHERE A.datedefin = (SELECT MAX(B.datedefin) FROM MATABLE B
    WHERE  A.numdospere = B.numdospere)
    AND A.numdosfils = (SELECT MAX(C.numdosfils) FROM MATABLE C
    WHERE  A.numdospere = C.numdospere
    AND A.datedefin = C.datedefin)
    ;
    Merci. Et au bout du compte il n'y a pas de clause GROUP BY .....

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

Discussions similaires

  1. Requète avec GROUP BY Sql Serveur 200
    Par Corben dans le forum Développement
    Réponses: 6
    Dernier message: 31/10/2008, 11h55
  2. Syntaxe d'une requête avec GROUP
    Par gvdmoort dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/10/2006, 16h10
  3. Requête avec Group by sur Oracle 8i
    Par madina dans le forum Oracle
    Réponses: 14
    Dernier message: 16/06/2006, 13h41
  4. requête avec group by...
    Par JerBi dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/03/2006, 04h17
  5. Problème requête avec group by et distinct
    Par tomca dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/07/2005, 17h10

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