requete sql avec max sous oracle

requete sql avec max sous oracle - SQL/NoSQL - Programmation

Marsh Posté le 22-11-2007 à 09:34:00    

salut,
 
J'ai une table qui contient ses données
 
 

Citation :

A B C D E
Y 21/11/2007 14:50:50 123 1 22
V 21/11/2007 15:50:50 124 1 56  
V 21/11/2007 15:50:50 125 1 78  

 
 
ce que je souhaiterais c'est recuperer les infos à une date donnée,sachant que je peux avoir des enregistrements ayant une meme date ,mais des numeros d'enregistrement different (colonne C).
par exemple si je veux recuperer tous les enregistrement pour lesquelles la date est inferieur au
22/11/2007 15:50:50, je devrais avoir cette ligne :
 
V 21/11/2007 15:50:50 125 1 78  
 
et pour cela je dois faire une requete qui me retourne le max B (la date) et le max C;
j'ai fait cette requete mais elle me retourne les 3 lignes, je suis un peu perdu
 
 

Citation :

SELECT  max(B),max(C),D,E FROM matable
WHERE B < TO_DATE('21/11/2007 15:50:50, 'DD/MM/YYYY HH24:MI:SS')
and D= 1
group by D,E


 
 
est ce que vous voyez comment je pourrai faire ?
 
merci

Reply

Marsh Posté le 22-11-2007 à 09:34:00   

Reply

Marsh Posté le 22-11-2007 à 10:34:46    

regarde la doc de la clause HAVING.
http://technet.microsoft.com/fr-fr [...] 80199.aspx

Reply

Marsh Posté le 22-11-2007 à 11:50:13    

ca devrait le faire
 

Code :
  1. select distinct
  2. first_value(a)over(partition by b order by c desc) as a,
  3. first_value(b)over(partition by b order by c desc) as b,
  4. first_value(c)over(partition by b order by c desc) as c,
  5. first_value(d)over(partition by b order by c desc) as d,
  6. first_value(e)over(partition by b order by c desc) as e
  7. from toto

Reply

Marsh Posté le 23-11-2007 à 10:42:39    

j'ai essayer elle ne fonctionne pas casimir

Reply

Marsh Posté le 23-11-2007 à 10:55:48    

personne ne voit comment faire pour recuperer cette ligne
V 21/11/2007 15:50:50 125 1 78    
qui correspond au max de la date et au max de la colonne C ???
 
Merci

Reply

Marsh Posté le 23-11-2007 à 11:20:08    

Magic t'avais donné une bonne piste avec le having...
Maintenant j'aurais tendance à préferer une requête du style

Code :
  1. SELECT  B,C,D,E FROM matable
  2. WHERE B < TO_DATE('21/11/2007 15:50:50', 'DD/MM/YYYY HH24:MI:SS')
  3. AND D= 1
  4. ORDER BY B DESC, C DESC
  5. WHERE rownum=1


Message édité par anapajari le 23-11-2007 à 11:20:18
Reply

Marsh Posté le 23-11-2007 à 12:16:05    

ha ok il ne faut qu'une seule ligne ^^
sry j'avais mal compris

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed