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

  1. #1
    Membre du Club
    Inscrit en
    avril 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : avril 2006
    Messages : 283
    Points : 62
    Points
    62

    Par défaut prendre le max d'une date

    Bonjour,

    grâce à mon interface j'aimerai pouvoir récupérer la ligne de la dernière modification d'un libellé
    j'ai un numéro de contrat et son libellé, le libellé peut changer et à chaque changement j'ai la date de modification. Je prends donc la plus récente

    j'ai posé un filtre sur la date en prenant le max
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select max(date_)
    FROM contrat
    le problème est qu'il me prend uniquement le contrat dont la date est la plus récente, donc dans mon tableau j'ai qu'une seule ligne
    alors que je veux le dernier libellé de contrat pour chaque contrat
    il manque la notion de group by, mais comment le préciser dans le designer?

    what's the problem???

  2. #2
    Membre expérimenté Avatar de ojo77
    Homme Profil pro
    Support
    Inscrit en
    décembre 2010
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Support
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : décembre 2010
    Messages : 676
    Points : 1 586
    Points
    1 586

    Par défaut

    Le problème est que votre filtre retourne le maximum pour la date sur l'ensemble de la table contrat. Visiblement vous souhaitez le maximum de la date pour chaque contrat.

    Le filtre doit donc intégrer une contrainte sur le numéro de contrat (ou l'identifiant de contrat quel qu'il soit).
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select * from  contrat e
    where e.date in 
     (SELECT max(date)
      FROM contrat c
      where c.id=e.id )

  3. #3
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926

    Par défaut

    where in (max) c'est un peu moyennageux, non?

    bon, je ne sais pas si tu accès aux analytiques, si oui alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * from 
    (select rank() over (partition by id order by dat desc) r,e.* from contrat e) 
    where r=1

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 9i] Max d'une date
    Par Requin15 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 09/06/2006, 15h09

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