Pb SQL

scratchy -  
 scratchy -
Voici mon pb
Dans une table oracle, je dois selectionner la derniere donnee d'une annee donnee. La table dispose d'une colonne type date en format jour/mois/annee.Qq un pourrait-t-il me donner la clause adequate?
Merci
A voir également:

2 réponses

Tittom Messages postés 422 Statut Membre 128
 
Salut, voici le résultat de mes recherches.

Tout d'abord, voici la table que j'ai utilisée :

====
SQL> DESC tbl;
Name Type Nullable Default Comments
---- ---- -------- ------- --------
COL DATE Y

SQL> SELECT TO_CHAR(col, 'DD Month YYYY') AS dates FROM tbl ORDER BY col;

DATES
-----------------
29 Février 2000
30 Août 2001
30 Septembre 2001
30 Novembre 2001
30 Mars 2002
30 Avril 2002

6 rows selected
====

On souhaite par exemple récupérer le dernier enregistrement de l'année 2001 (donc le 30 novembre 2001).
Il s'agit donc de la valeur la plus grande que l'on puisse trouver dans la colonne COL, pour l'année 2001. Ce qui en SQL, peut se traduire par :

====
SQL> SELECT TO_CHAR(MAX(col), 'DD Month YYYY') AS "Date maxi" FROM tbl WHERE TO_CHAR(col, 'YYYY')='2001';

Date maxi
-----------------
30 Novembre 2001
====

Les fonctions TO_CHAR sont là pour que les résultats des requêtes soient plus lisibles...
Attention : dans la clause WHERE TO_CHAR(col, 'YYYY')='2001', si tu as un index sur la colonne COL, il ne sera sûrement pas utilisé. Il faut alors définir un index sur la fonction TO_CHAR(col, 'YYYY'). Si tu as besoin d'aide à ce sujet, n'hésite pas !

J'espère que cela t'aidera
Tittom
0
scratchy
 
cool tu m enleves une grosse epine du pied
merci
0