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

MS SQL Server Discussion :

Group by et top 1 [2008R2]


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Group by et top 1
    Bonjour,

    j'ai un peu de mal avec une requête, surement un problème classique pour les experts du forum...

    J'ai une vue (v_ma_vue) qui contient les colonnes suivantes :

    article, numero_commande, date_commande

    J'aimerais tirer de cette vue, une liste d'articles avec le numéro de commande dont la commande à la date la plus petite.


    SELECT ARTILCE, NUMERO_COMMANDE, DATE_COMMANDE FROM V_MA_VUE A

    WHERE DATE_COMMANDE = (SELECT MIN(DATE_COMMANDE) FROM V_MA_VUE B WHERE A.ARTICLE = B.ARTICLE)

    ....
    Sachant que je peux avoir plusieurs commandes du même article avec la même date de commande. Dans ce cas la, j'aimerais avoir n'importe laquelle des numéros de commande.

    J'imagine une combinaison de GROUP BY et de TOP 1 pourrait peut être faire l'affaire...

    Merci pour votre aide.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 896
    Points : 53 126
    Points
    53 126
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    WITH 
    T AS 
    (
    SELECT ARTILCE, NUMERO_COMMANDE, DATE_COMMANDE,
           ROW_NUMBER() OVER(PARTITION BY ARTILCE ORDER BY DATE_COMMANDE DESC) AS N  
    FROM   V_MA_VUE
    )
    SELECT ARTILCE, NUMERO_COMMANDE, DATE_COMMANDE
    FROM   T
    WHERE  N = 1;
    A lire sur les fonctions de fenêtrage : http://sqlpro.developpez.com/article...clause-window/

    A +

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Décembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup, c'est exactement ce qu'il me fallait ! on ne pense pas assez souvent aux fonctions fenêtrées

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

Discussions similaires

  1. Top n per group
    Par Wisefool dans le forum Développement
    Réponses: 3
    Dernier message: 16/10/2009, 15h56
  2. Expert tri de groupe avec Top N par VB.net
    Par bonflor dans le forum Autres outils décisionnels
    Réponses: 0
    Dernier message: 27/07/2009, 19h42
  3. [CR XI] Tri de groupes - faire un top 5
    Par Johnny_boy_72 dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 14/04/2009, 18h50
  4. Top Group By : Optimisation
    Par Baquardie dans le forum Langage SQL
    Réponses: 7
    Dernier message: 07/05/2008, 20h54

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