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

Designer Oracle Discussion :

prendre le max d'une date


Sujet :

Designer Oracle

  1. #1
    Membre du Club
    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é
    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é
    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