Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/06/2008, 17h21   #1
Membre à l'essai
 
Inscription : octobre 2005
Messages : 132
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 132
Points : 21
Points : 21
Par défaut MAX dans une requête

Bonjour je souhaite utiliser la fonction MAX dans une requête mais rien a faire, le résultat me ressort toutes les dates, avez vous une idée du problème ?
Code :
1
2
3
4
5
6
7
SELECT PRFL_TYPE.PRFL_TYPE_NAM, PRFL.DSCT_DAT, PRFL.PRFL_TYPE_ID, PRFL.PRFL_ID, PRFL_PRMT_VAL.ARY_INDX_NBR_1, PRFL_PRMT_VAL.ARY_INDX_NBR_2, PRFL_PRMT_VAL.PRMT_VAL, MAX(PRFL_PRMT_VAL.EFTV_DAT_ID) 
FROM EWRFRMASTER.PRFL , EWRFRMASTER.PRFL_PRMT_VAL , EWRFRMASTER.PRFL_TYPE 
WHERE ( (PRFL_TYPE.PRFL_TYPE_ID = PRFL.PRFL_TYPE_ID) AND
(PRFL_PRMT_VAL.PRFL_TYPE_ID = PRFL.PRFL_TYPE_ID) AND
(PRFL_PRMT_VAL.PRFL_ID = PRFL.PRFL_ID) AND
(PRFL.DSCT_DAT = '31/12/2099') AND (UPPER(PRFL.PRFL_TYPE_ID) = UPPER('rate')) AND (PRFL.PRFL_ID = 'vol_971') AND (PRFL_PRMT_VAL.ARY_INDX_NBR_1 = 724) AND (UPPER(PRFL_TYPE.LNGG_ID) = UPPER('f')) ) 
GROUP BY PRFL_TYPE.PRFL_TYPE_NAM, PRFL.DSCT_DAT, PRFL.PRFL_TYPE_ID, PRFL.PRFL_ID, PRFL_PRMT_VAL.ARY_INDX_NBR_1, PRFL_PRMT_VAL.ARY_INDX_NBR_2, PRFL_PRMT_VAL.PRMT_VAL
Merci d'avance !
crapouye est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2008, 17h42   #2
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 975
Points : 3 975
Citation:
Envoyé par crapouye Voir le message
Bonjour je souhaite utiliser la fonction MAX dans une requête mais rien a faire, le résultat me ressort toutes les dates, avez vous une idée du problème ?
Et on devine le résultat que tu veux ?
Boule de cristal...
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2008, 17h44   #3
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 975
Points : 3 975
Pourquoi ne pas remplacer
par
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2008, 14h09   #4
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
Citation:
Envoyé par Jerome_Mtl Voir le message
Et on devine le résultat que tu veux ?
hmm, peut-être :-)
Code :
1
2
3
SELECT deptno,empno,ename,job,max(hiredate) hiredate
FROM emp
GROUP BY deptno,empno,ename,job
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    DEPTNO      EMPNO ENAME      JOB       HIREDATE 
---------- ---------- ---------- --------- ---------
        20       7566 JONES      MANAGER   02-APR-81
        20       7788 SCOTT      ANALYST   19-APR-87
        30       7698 BLAKE      MANAGER   01-MAI-81
        30       7521 WARD       SALESMAN  22-FEB-81
        10       7839 KING       PRESIDENT 17-NOV-81
        30       7900 JAMES      CLERK     03-DEZ-81
        10       7782 CLARK      MANAGER   09-JUN-81
        10       7934 MILLER     CLERK     23-JAN-82
        20       7369 SMITH      CLERK     17-DEZ-80
        30       7499 ALLEN      SALESMAN  20-FEB-81
        30       7654 MARTIN     SALESMAN  28-SEP-81
        30       7844 TURNER     SALESMAN  08-SEP-81
        20       7876 ADAMS      CLERK     23-MAI-87
        20       7902 FORD       ANALYST   03-DEZ-81
Code :
1
2
3
SELECT deptno,empno,ename,job,hiredate FROM emp 
WHERE (hiredate,deptno) IN 
  (SELECT max(hiredate),deptno FROM emp GROUP BY deptno)
Code :
1
2
3
4
5
    DEPTNO      EMPNO ENAME      JOB       HIREDATE 
---------- ---------- ---------- --------- ---------
        30       7900 JAMES      CLERK     03-DEZ-81
        20       7876 ADAMS      CLERK     23-MAI-87
        10       7934 MILLER     CLERK     23-JAN-82
Code :
1
2
3
4
5
6
7
8
SELECT 
  DEPTNO,
  MAX(EMPNO) KEEP (DENSE_RANK LAST ORDER BY HIREDATE,EMPNO) EMPNO,
  MAX(ename) KEEP (DENSE_RANK LAST ORDER BY HIREDATE,EMPNO) ename,
  MAX(job) KEEP (DENSE_RANK LAST ORDER BY HIREDATE,EMPNO) job,
  MAX(hiredate) hiredate
FROM EMP
GROUP BY DEPTNO
Code :
1
2
3
4
5
    DEPTNO      EMPNO ENAME      JOB       HIREDATE 
---------- ---------- ---------- --------- ---------
        10       7934 MILLER     CLERK     23-JAN-82
        20       7876 ADAMS      CLERK     23-MAI-87
        30       7900 JAMES      CLERK     03-DEZ-81
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2008, 15h21   #5
Membre à l'essai
 
Inscription : octobre 2005
Messages : 132
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 132
Points : 21
Points : 21
Salut, désolé dans la précipitation, je n'ai même pas indiqué que je ne souhaitais qu'une seule date..

Merci pour ces exemples de code, je pense qu'avec ça je vais m'en sortir. je vous tiens au courant, merci
crapouye est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2008, 16h03   #6
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
dans ce cas tu peux aussi faire

Code :
SELECT * FROM (SELECT * FROM emp ORDER BY hiredate DESC) WHERE rownum=1
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h59.


 
 
 
 
Partenaires

Hébergement Web