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 :

Problème sur group by


Sujet :

Langage SQL

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 611
    Points : 359
    Points
    359
    Par défaut Problème sur group by
    Bonjour,

    Je cherche à identifier le dernier mouvement d'entrée en stock par article.
    La table des mouvements d'entrée contient la date d'entrée en stock, l'id_article, l'id_mouvt_in et la référence.
    Je parviens à remonter l'article et la date de validation par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select m.id_article, max(m.date_validation)
    from t_mouvt_in m
    group by m.id_article
    Je pourrais ensuite faire une requête qui utilise cette sous-requête pour remonter les informations mais il peut y avoir plusieurs mouvements d'entrée en stock dans la journée sur le même id_article. Aussi je souhaiterai également remonter l'id_mouvt_in.
    J'ai consulté le didacticiel de F. BROUARD mais je ne trouve pas ce que je veux.
    Merci d'avance.
    Julien.

  2. #2
    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,

    Vu que vous n'avez pas spécifié votre SGBD ...

    solution universel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select t_in.id_mouvt_in, t_in.id_article, t_in.date_validation
    from t_mouvt_in t_in
    inner join (SELECT m.id_article, max(m.date_validation) as date_validation
    FROM t_mouvt_in m
    GROUP BY m.id_article) t_in_bis on t_in.id_article = t_in_bis.id_article and t_in.date_validation = t_in_bis.date_validation
    Et une solution sans jointure / group by qui ne marchera pas de partout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    with tmp as (
    select id_mouvt_in, id_article, date_validation,
    row_number() over(partition by id_article order by date_validation desc) as rnk
    from t_mouvt_in)
     
    select id_mouvt_in, id_article, date_validation 
    from tmp
    where rnk = 1

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

Discussions similaires

  1. Problème sur GROUP BY
    Par laxe13 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/11/2013, 14h03
  2. problème sur group by
    Par xavier81 dans le forum Développement
    Réponses: 2
    Dernier message: 24/02/2011, 17h53
  3. [XI] problème avec groupe sur un champ trié par origine ?
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 11/04/2007, 15h31
  4. [SQL] problème sur un group by
    Par d_token dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/09/2006, 10h38
  5. Réponses: 9
    Dernier message: 17/01/2004, 10h51

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