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 :

[oracle 9i] Max d'une date


Sujet :

Langage SQL

  1. #1
    Débutant
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Points : 52
    Points
    52
    Par défaut [oracle 9i] Max d'une date
    Bonjour,

    Voici qqs données :

    -----t1---------------t2
    26/03/1998-------26/05/2000
    26/03/1998-------03/05/2002
    06/02/2001-------03/05/2002

    Une question : comment n'afficher que les deux lignes suivantes :
    26/03/1998-------26/05/2000
    06/02/2001-------03/05/2002

    Il faut en effet que je sélectionne le max de t2, avec t1<t2

    et là, malheureusement, dans ces deux lignes :
    26/03/1998-------26/05/2000
    26/03/1998-------03/05/2002

    celle ci est en trop :
    26/03/1998-------03/05/2002 (il me faudrait la ligne à la date 26/05/2000)

    Comment peut-on lui dire de prendre la date la plus grande et la plus proche ?

    Merci!

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    Heu... excuse moi, mais j'ai pas vraiment compris ce que tu voulais...

    tu pourrais décrire précisément les conditions dont tu as besoin pour la selection ?

  3. #3
    Débutant
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Points : 52
    Points
    52
    Par défaut
    alors,

    j'ai
    -----t1---------------t2
    26/03/1998-------26/05/2000
    26/03/1998-------03/05/2002
    06/02/2001-------03/05/2002

    j'aimerais sélectionner les dates t1<t2 mais celles qui sont directement inférieures (+ proche)

    ex :
    ça c'est parfait :
    06/02/2001-------03/05/2002

    Mais là:
    26/03/1998-------26/05/2000
    26/03/1998-------03/05/2002

    26/03/1998<03/05/2002 et 26/03/1998<26/05/2000, Mais, il me faudrait la date supérieure la plus proche, à savoir 26/05/2000.

    C'est plus clair ainsi ?

  4. #4
    Débutant
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Points : 52
    Points
    52
    Par défaut
    est ce que l'on ne pourrait pas dire :
    si pour t1 donné, j'ai une seule date, alors ok, c'est bon:
    06/02/2001-------03/05/2002

    Mais si, pour t1 donné, j'ai deux résultats ou plus :
    26/03/1998-------26/05/2000
    26/03/1998-------03/05/2002

    alors je prends t2 min, à savoir:
    26/03/1998-------26/05/2000

    Comment je pourrais faire cette sélection ?
    Merci

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    donc en gros, il te faut : le plus grand t1 possible et pour ceului là, le plus petit t2 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT T.t1, T.t2
    FROM table T
    WHERE T.t1 = (
       SELECT MAX(Ta.t1)
       FROM table Ta
    )
    AND T.t2 = (
       SELECT MIN(Tb.t2)
       FROM table Tb
       WHERE Tb.t1 = T.t1
    )

  6. #6
    Débutant
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Points : 52
    Points
    52
    Par défaut
    non, il faut juste trouver la date t2 qui est directement supérieure à t1 :

    26/03/1998-------26/05/2000
    26/03/1998-------03/05/2002
    06/02/2001-------03/05/2002

    ainsi, pour t1=26/03/1998, il me faut t2=26/05/2000 et non 03/05/2002

  7. #7
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    OK... donc il te le faut pour toutes les dates t1... :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T.t1, MIN(T.t2)
    FROM table T
    GROUP BY T.t1
    WHERE T.t2 > T.t1

  8. #8
    Débutant
    Inscrit en
    Juin 2003
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 108
    Points : 52
    Points
    52
    Par défaut
    Merci pour ton aide, ça m'a permis de voir mon pb différemment!
    et c'est résolu, tout du moins pour le moment!

    Merci bcp !!

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

Discussions similaires

  1. max pour une date
    Par Papy214 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/08/2010, 09h40
  2. Select avec max sur une date
    Par olibara dans le forum Requêtes
    Réponses: 10
    Dernier message: 06/07/2010, 07h18
  3. Max a une date precise mais doit retourner aussi si dernier
    Par cloche44 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/01/2007, 09h51
  4. fonction MAX sur une date
    Par Poisson59 dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 08/09/2006, 14h59
  5. [ORACLE 10G]Incrémentation d'une date d'un jour
    Par titanblanc dans le forum Oracle
    Réponses: 2
    Dernier message: 05/01/2006, 11h07

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