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

SQL Oracle Discussion :

Aide en SQL sur la clause SELECT


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 24
    Par défaut Aide en SQL sur la clause SELECT
    Bonjour,
    je ne suis pas très doué en SQL, j'ai les données suivantes :

    ACTE_COD ACDT_MODIF FORFAI_COD
    ---------- ------------ ------------
    AAQN004 10/03/2005 2
    AAQN004 20/07/2005 2
    AAQN004 10/08/2007 2
    AAQN004 21/01/2010 2
    AAQN900 10/03/2005 2
    AAQN901 10/03/2005 2
    ACQH001 10/03/2005 1
    ACQH001 20/07/2005 1
    ACQH001 21/01/2010 1
    ACQH001 10/08/2007 1
    ACQH002 10/03/2005 1
    ACQH002 21/01/2010 2
    ACQH002 20/07/2005 1
    ACQH002 10/08/2007 1
    ...

    J'aimerais pouvoir récupérer en SQL les champs ACTE_COD & FORFAI_COD pour la date la plus récente de chaque ACTE_COD.
    Le résultat attendu serait :

    ACTE_COD ACDT_MODIF FORFAI_COD
    ---------- ------------ ------------
    AAQN004 21/01/2010 2
    AAQN900 10/03/2005 2
    AAQN901 10/03/2005 2
    ACQH001 21/01/2010 1
    ACQH002 21/01/2010 2

    Merci d'avance.

  2. #2
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2005
    Messages : 197
    Par défaut
    Salut,

    essaye ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select ACTE_COD, max(ACDT_MODIF), FORFAI_COD from tatable
    group by ACTE_COD, FORFAI_COD

  3. #3
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 24
    Par défaut
    Le résultat obtenu est :

    ACTE_COD ACDT_MODIF FORFAI_COD
    ---------- ------------ ------------
    AAQN004 21/01/2010 2
    AAQN900 10/03/2005 2
    AAQN901 10/03/2005 2
    ACQH001 21/01/2010 1
    ACQH002 10/08/2007 1
    ACQH002 21/01/2010 2

    Cela n'est pas trop top, car pour le code ACQH002, j'ai 2 rows retournées et non une seule (celle en gras étant de trop).

  4. #4
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2005
    Messages : 197
    Par défaut
    Citation Envoyé par frglyon Voir le message
    Le résultat obtenu est :

    ACTE_COD ACDT_MODIF FORFAI_COD
    ---------- ------------ ------------
    AAQN004 21/01/2010 2
    AAQN900 10/03/2005 2
    AAQN901 10/03/2005 2
    ACQH001 21/01/2010 1
    ACQH002 10/08/2007 1
    ACQH002 21/01/2010 2

    Cela n'est pas trop top, car pour le code ACQH002, j'ai 2 rows retournées et non une seule (celle en gras étant de trop).
    En effet, j'avais mal vu. Ceci devrait convenir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT ACTE_COD, max(ACDT_MODIF), max(FORFAI_COD) FROM tatable
    GROUP BY ACTE_COD
    order by ACTE_COD

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Plutôt comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      SELECT ACTE_COD,
             max(ACDT_MODIF) as ACDT_MODIF,
             max(FORFAI_COD) keep(dense_rank first order by ACDT_MODIF desc) as FORFAI_COD
        FROM MaTable
    GROUP BY ACTE_COD
    ORDER BY ACTE_COD;

  6. #6
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 24
    Par défaut
    Merci de m'aider, hélas ce n'est toujours pas bon.
    Il faut dire que j'avais omis de vous dire que le SBGD attaqué est de l'Oracle.

    Waldar,
    j'ai un erreur d'exécution avec ta requête ORA-00923: FROM keyword not found where expected en se positionnant sur le mot-clé dense.

    Indiana,
    ta requête ne me convient pas car si j'ai le jeu de données suivant :
    ACTE_COD ACDT_MODIF FORFAI_COD
    ---------- ------------ ------------
    AAQN004 21/01/2010 2
    AAQN900 10/03/2005 2
    AAQN901 10/03/2005 2
    ACQH001 21/01/2010 1
    ACQH002 10/08/2007 2
    ACQH002 21/01/2010 1

    je me retrouve avec
    ACTE_COD ACDT_MODIF FORFAI_COD
    ---------- ------------ ------------
    ...
    ACQH002 21/01/2010 2

    au lieu de
    ACTE_COD ACDT_MODIF FORFAI_COD
    ---------- ------------ ------------
    ...
    ACQH002 21/01/2010 1

    En fait, j'aimerais pour chaque code acte (ACTE_COD), le code forfait (FORFAI_COD) pour la date de modif (ACDT_MODIF) la plus récente.

    Merci pour votre aide.

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

Discussions similaires

  1. Aide requête SQL sur le plus mauvais joueur
    Par predalpha dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/07/2014, 10h03
  2. Requête SQL sur la clause in et not in
    Par rec82 dans le forum Bases de données
    Réponses: 14
    Dernier message: 28/09/2008, 11h51
  3. [AJAX] Aide à la recherche sur une liste <select>
    Par lthibert dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/06/2007, 13h00
  4. Réponses: 3
    Dernier message: 23/11/2006, 09h28
  5. [PL/SQL][10g] Probleme sur la clause WHERE
    Par titilleuse dans le forum SQL
    Réponses: 4
    Dernier message: 13/11/2006, 18h52

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