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] Fonction Max SQL


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Janvier 2003
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2003
    Messages : 339
    Par défaut [SQL] Fonction Max SQL
    Bonjour, je peine a rédiger une requete SQL, peut-être pourriez vous m'aider !

    J'ai la table Suivante

    Chp1 Chp 2 Chp 3 Chp 4

    A1 C 45 46
    A1 P 43 48
    A1 C 47 43
    A1 P 42 25
    B1 C 40 47
    B1 P 38 13
    C1 C 24 21
    C1 P 45 64

    Je souhaites faire une requete qui me permette de recuperer pour chaque CHP1 de récuper soit la valeur de CHP3 si CHP2 est à C, soit la valeur de CHP4 si CHP2 est à P.

    Je compte bien traiter ce point par un union pour traiter le cas du C ou du P apres mais le soucis que j'ai c'est que je dois récupérer les valeurs maximum de chaque colonne soit :

    A1 C 47
    A1 P 48
    B1 C 40
    B1 P 13
    C1 C 24
    C1 P 64

    J'étais parti sur la piste du MAX avec un ORDER BY mais il me renvoi qu'une seule valeur, comment donc faire pour avoir le MAX de chaque élément d'une clause ORDER BY

    Je suis peut etre pas très clair mais hésitez pas à me répondre pour plus d'info !

  2. #2
    Membre éclairé Avatar de Purple Haze
    Profil pro
    Inscrit en
    Février 2007
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 293
    Par défaut
    Salut !!!
    as tu essayé de faire
    SELECT MAX(table)
    FROM chp1, chp2, chp3, chp4

    ?
    Si ça ne marche pas il ya toujors la solution d'écrire une requête pour chaque champ mais ce n'est pas le plus pratique.

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    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 134
    Par défaut
    C'est résolu assez acilement avec CASE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select CHP1
     , CHP2
     , max(case CHP2 when 'C' then CHP3 when 'P' then CHP4 end)
    from MATABLE
    group by CHP1, CHP2
    ;
    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.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Janvier 2003
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2003
    Messages : 339
    Par défaut
    C'est tout a fait ce qu'il me fallait, mais je ne savais pas qu'on pouvait utiliser les instructions CASE et WHEN !!!


    Merci bcp pour cette info

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Janvier 2003
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2003
    Messages : 339
    Par défaut
    Purple Haze >
    Salut !!!
    as tu essayé de faire
    SELECT MAX(table)
    FROM chp1, chp2, chp3, chp4

    ?
    Si ça ne marche pas il ya toujors la solution d'écrire une requête pour chaque champ mais ce n'est pas le plus pratique.
    Pour info, j'ai tout de même bien essayé cette méthode mais le problème est un peu plus complexe que de faire un max d'une colonne, la c'est une liste de maximum en fonction de la valeur d'un champs et groupé par un autre champs ...

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

Discussions similaires

  1. Requête SQL Fonction Max(LaDate)
    Par ElVatoLoco69 dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/02/2012, 11h55
  2. [AC-2007] SQL : Fonction MAX
    Par Jordmund dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 23/09/2010, 09h17
  3. requete sql fonction MAX
    Par yaboki dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 27/04/2009, 14h51
  4. [VB6] Recordset et la fonction max() SQL
    Par zako dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/05/2006, 09h56
  5. [SQL Server 8] fonction Max --- selon des conditions
    Par Baquardie dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/01/2006, 21h06

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