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 :

Probleme avec select max


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Probleme avec select max
    Bonjour à tous,

    voila ma problematique dans sqlserver 2000

    J'ai une table : template et des champs tpl01, tpl02, tpl03 qui sont des dates.
    je voudrais comparer ces trois dates et recuperer la plus vieille des trois pour chaque enregistrement.

    je bloque dans l'expression du select max(?).

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 099
    Points : 28 400
    Points
    28 400
    Par défaut
    Max() est une fonction de regroupement de lignes, elle ne te permet pas de faire des comparaisons entre colonnes d'une même ligne.

    Une manière de le faire avec max() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT  idligne
        ,   MAX(tpl)
    FROM    SELECT  idligne
                ,   tpl01   AS tpl
            FROM    matable
        UNION
            SELECT  idligne
                ,   tpl02   AS tpl
            FROM    matable
        UNION
            SELECT  idligne
                ,   tpl03   AS tpl
            FROM    matable
    GROUP BY idligne
    ;
    Une autre version, sans max()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT  idligne
        ,   CASE WHEN   (CASE WHEN tpl01 > tpl02
                            THEN    tpl01 
                            ELSE    tpl02
                        END) > tpl03
                THEN    (CASE WHEN tpl01 > tpl02 
                            THEN    tpl01 
                            ELSE    tpl02
                        END)
                ELSE    tpl03
            END
    FROM    matable
    ;
    Avec la première version, tu n'as que l'identifiant de la ligne et ta valeur calculée. Avec l'autre, tu as accès à toutes les autres colonnes de la table.

  3. #3
    Candidat au Club
    Inscrit en
    Août 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup, ça fonctionne parfaitement bien.

    En plus quand 1 des 3 champs est vide , ça repond vide, ce que je voulais


    Merci

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

Discussions similaires

  1. probleme avec select max
    Par Kasanova75 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 19/09/2009, 09h57
  2. Probleme avec Select max()
    Par Chikh001 dans le forum C#
    Réponses: 5
    Dernier message: 27/03/2009, 15h58
  3. Probleme lié avec select MAX
    Par otari dans le forum Langage SQL
    Réponses: 9
    Dernier message: 20/06/2007, 20h28
  4. [EJB3][HIBERNATE] Probleme avec select max
    Par kristof_machin dans le forum Hibernate
    Réponses: 2
    Dernier message: 26/04/2006, 13h05
  5. Probleme avec Select Case
    Par GeffD dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 07/03/2005, 15h28

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