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 :

Utilisation de la fonction MAX


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de PatStan17
    Homme Profil pro
    Chef de projet / Développeur
    Inscrit en
    Décembre 2008
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2008
    Messages : 307
    Points : 155
    Points
    155
    Par défaut Utilisation de la fonction MAX
    Bonjour ,

    je bute sur l'utilisation de la fonction MAX

    J'ai une table avec trois champs

    IDCONTACT
    IDDOSSIER
    DATECONTACT

    idcontact est la clef primaire de ma table , c'est un champ compteur, donc différent pour chaque enregistrement

    Je veux récupérer L'IDCONTACT DE LA LIGNE AVEC LA DATECONTACT LA PLUS RECENTE POUR UN
    UN IDDOSSIER DONNE

    JE FAIS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT        MAX(DateContact) AS Expr1, IdDossier, IdContact
    FROM            dbo.PERContacts
    GROUP BY IdDossier, IdContact
    HAVING        (IdDossier = 1767)

    mais c'est pas ça ... Cela me renvoie deux lignes

    quelqu'un peut-il me donner une piste ?
    Yakatépé

  2. #2
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    C'est normal car puisque ton idcontact est unique.

    Il faut faire ta requête en deux temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT idContact
    FROM db.PERContacts a
            JOIN (SELECT max(DateContact) DateContact, idDossier
                    FROM db.PERContacts
                    GROUP BY idDossier) b
            ON a.DateContact = b.DateContact
            AND a.idDossier = b.idDossier
    WHERE idDossier = 1767
    Au passage quand tu as une condition il faut la mettre dans la clause WHERE et non HAVING

    EDIT : Ajout du group by
    ~ Lola ~

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Il manque un GROUP BY lola06 dans votre requête.

    PatStan17, quel est votre SGBD ?

  4. #4
    Membre habitué Avatar de PatStan17
    Homme Profil pro
    Chef de projet / Développeur
    Inscrit en
    Décembre 2008
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2008
    Messages : 307
    Points : 155
    Points
    155
    Par défaut SGBDR
    Merci pour vos réponses ...

    J'utilise MS SQL Serveur 2008
    Yakatépé

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Vous pouvez utiliser la solution analytique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    With PContacts (IdDossier, IdContact, DateContact, rn) as
    (
    SELECT IdDossier, IdContact, DateContact
         , ROW_NUMBER() over(partition by IdDossier order by DateContact desc)
      FROM dbo.PERContacts
    )
    select IdDossier, IdContact, DateContact
      from PContacts
     where rn = 1
       and IdDossier = 1767;

  6. #6
    Membre habitué Avatar de PatStan17
    Homme Profil pro
    Chef de projet / Développeur
    Inscrit en
    Décembre 2008
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2008
    Messages : 307
    Points : 155
    Points
    155
    Par défaut Merci
    Merci pour vos réponse c'est résolu ..
    Yakatépé

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

Discussions similaires

  1. [Toutes versions] Utilisation de la fonction max
    Par thoruiz dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/08/2019, 09h19
  2. Ouverture d'un fichier et utilisation de la fonction max
    Par gta9956 dans le forum Général Python
    Réponses: 5
    Dernier message: 03/06/2014, 21h09
  3. Utilisation de la fonction MAX()
    Par JustyDark dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/01/2014, 22h36
  4. Utilisation de la fonction MAX
    Par joyeux_lapin13 dans le forum SAS Base
    Réponses: 4
    Dernier message: 23/02/2011, 09h32
  5. Utilisation de la fonction max
    Par k-koo dans le forum Langage SQL
    Réponses: 12
    Dernier message: 30/11/2007, 15h55

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