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 :

[SQL Server] Requete avec MAX et group by


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de joKED
    Profil pro
    Imposteur en chef
    Inscrit en
    Février 2006
    Messages
    339
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Imposteur en chef

    Informations forums :
    Inscription : Février 2006
    Messages : 339
    Par défaut [SQL Server] Requete avec MAX et group by
    Bonjour à tous,

    j'ai vraiment du mal avec les requetes dans lesquelles il y a des histoire de MAX et group by.

    Voici la structure de ma table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    IdTrame int PK
    IdBoitier int FK
    Heure datetime
    X real
    Y real
    Erreur bit
    Je voudrais faire une requete qui me retourne le MAX(Heure) pour chaque boitier, acoompagné du X et Y correspondant.

    J'ai donc fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT MAX(Heure) as HeureMax,IdBoitier,X,Y FROM T_Position
    Group by IdBoitier,X,Y
    Order by IdBoitier
    Malheureusement, je n'obtiens pas les données que j'attends...

    Quelle est donc l'erreur que j'ai fais?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 137
    Par défaut
    En dehors des fonctions de regroupement, toutes les colonnes retournées par la requête doivent être reprises dans le group by... ce qui ne correspond pas à ton besoin.
    Il faut sélectionner la ligne comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT  Heure   AS HeureMax
        ,   IdBoitier
        ,   X
        ,   Y 
    FROM    T_Position  as T
    WHERE EXISTS    (   SELECT  1
                        FROM    T_Position  as M
                        WHERE   T.IdBoitier = M.IdBoitier
                        HAVING  MAX(M.Heure) = T.Heure    
                    )    
    ORDER BY IdBoitier
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/03/2014, 12h18
  2. Problem requete avec MAX, GROUP BY ...
    Par alexthomas dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/11/2008, 16h58
  3. Requete avec max et group by
    Par Maxime555 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/07/2006, 12h48
  4. [SQL Server] Requete récupérant les 2 max
    Par Franck2mars dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/04/2006, 14h45
  5. [SQL Server]Requête avec DateDiff
    Par sangokus dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 10/05/2004, 15h44

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