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

Développement SQL Server Discussion :

Selectionner une ligne avec un max sur plusieurs critères


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 61
    Points : 57
    Points
    57
    Par défaut Selectionner une ligne avec un max sur plusieurs critères
    Bonjour,

    J'ai une table de ce type là :

    ID PRODUIT DATE--- CLIENT
    1 PRO0001 20111202 CLI01
    2 PRO0001 20111202 CLI01
    3 PRO0002 20111202 CLI01
    4 PRO0002 20111203 CLI01
    5 PRO0002 20111202 CLI02

    Je souhaite récupérer l'ID maximum de la ligne par produit, par client et par Date maximum...

    Sur mon exemple je souhaite donc avoir :
    2 PRO0001 20111202 CLI01
    4 PRO0002 20111203 CLI01
    5 PRO0002 20111202 CLI02

    Avez vous une idée ? Je bute pour ma part sur les 2 max ...

    Merci

  2. #2
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Avez vous une idée ? Je bute pour ma part sur les 2 max ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT ID,PRODUIT,CLIENT,[DATE] 
    FROM (
       SELECT ID,
       PRODUIT,
       CLIENT,
       [DATE],
       ROWNUMBER() OVER (PARTITION BY PRODUIT,CLIENT,[DATE] ORDER BY [DATE] DESC,ID    DESC) ROW
       FROM TABLE) T
     WHERE T.ROW=1
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 61
    Points : 57
    Points
    57
    Par défaut
    Hello

    Merci pour la réponse. J'ai apporté une petite correction qui a consisté à supprimer la date de la partition sinon ça ne fonctionnait pas bien.
    Merci de m'avoir fait découvrir cette utilisation de Row_Number

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT ID,PRODUIT,CLIENT,[DATE] 
    FROM (
       SELECT ID,
       PRODUIT,
       CLIENT,
       [DATE],
       ROW_NUMBER() OVER (PARTITION BY PRODUIT,CLIENT ORDER BY [DATE] DESC,ID    DESC) ROW
       FROM TABLE) T
     WHERE T.ROW=1


    Achestyx

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/01/2012, 11h58
  2. Réponses: 0
    Dernier message: 27/07/2011, 11h43
  3. [DisplayTag] suppression d'une ligne avec un lien sur une autre Servlet
    Par luffy2mars dans le forum Taglibs
    Réponses: 1
    Dernier message: 12/01/2010, 11h36
  4. Une requête avec un Max sur 2 champs
    Par Bils dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/09/2007, 14h04
  5. Réponses: 18
    Dernier message: 23/06/2007, 01h17

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