Bonjour,
J'ai une table du genre
Code :
1 2 3 4 5 6 7 8 9 10
|
CREATE TABLE "RESERVATION"
(
"IDCLIENT" VARCHAR(10) NOT NULL,
"NOM" VARCHAR(60) NOT NULL,
"DEBUT" DATE NOT NULL,
"FIN" DATE NOT NULL,
"CHAMBRE" VARCHAR(2) NOT NULL,
PRIMARY KEY ("IDCLIENT")
); |
Et soit les lignes suivantes dans la table:
Citation:
IDCLIENT NOM DEBUT FIN CHAMBRE
01 AA 01/04/2010 17/05/2010 01
02 BB 18/05/2010 13/06/2010 02
03 CC 14/06/2010 14/07/2010 01
04 DD 15/07/2010 19/08/2010 04
05 EE 15/07/2010 19/08/2010 03
|
Moi je veux par une requête
SQL en Interbase, recupérer la dernière reservation de la table
suivant la date de DEBUT. Les colonnes renvoyées sont:
DEBUT, FIN, MOIS_ANNEE avec MOIS_ANNEE la colonne renommée qui renvoit que le mois en lettre et l'année.
NB Pas de doublon
Dans notre table, nous aurons:
Citation:
DEBUT FIN MOIS_ANNEE
15/07/2010 19/08/2010 JUILLET 2010
|
Soit la requête que j'effectue:
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
SELECT R.DEBUT, R.FIN,
CASE WHEN EXTRACT(MONTH FROM R.DEBUT)= 1 THEN 'JANVIER' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 2 THEN 'FEVRIER' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 3 THEN 'MARS' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 4 THEN 'AVRIL' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 5 THEN 'MAI' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 6 THEN 'JUIN' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 7 THEN 'JUILLET' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 8 THEN 'AOÛT' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 9 THEN 'SEPTEMBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 10 THEN 'OCTOBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 11 THEN 'NOVEMBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 12 THEN 'DECEMBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
END AS MOIS_ANNEE
FROM RESERVATION R
WHERE R.DEBUT = (SELECT MAX(R2.DEBUT) FROM RESERVATION R2) |
En faisant cette requête, je reçois les deux dernières lignes de ma table
Soit:
Citation:
DEBUT FIN MOIS_ANNEE
15/07/2010 19/08/2010 JUILLET 2010
15/07/2010 19/08/2010 JUILLET 2010
|
Pour que ça m'envoie juste une ligne, j'ai utilisé le mot DISTINCT du genre:
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
SELECT DISTINCT R.DEBUT, R.FIN,
CASE WHEN EXTRACT(MONTH FROM R.DEBUT)= 1 THEN 'JANVIER' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 2 THEN 'FEVRIER' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 3 THEN 'MARS' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 4 THEN 'AVRIL' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 5 THEN 'MAI' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 6 THEN 'JUIN' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 7 THEN 'JUILLET' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 8 THEN 'AOÛT' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 9 THEN 'SEPTEMBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 10 THEN 'OCTOBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 11 THEN 'NOVEMBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
WHEN EXTRACT(MONTH FROM R.DEBUT)= 12 THEN 'DECEMBRE' || ' ' || EXTRACT(YEAR FROM R.DEBUT)
END AS MOIS_ANNEE
FROM RESERVATION R
WHERE R.DEBUT = (SELECT MAX(R2.DEBUT) FROM RESERVATION R2) |
Et là je reçois un méssage d'erreur du genre:
Citation:
---------------------------
Erreur
---------------------------
data type not supported for arithmetic.
---------------------------
OK
---------------------------
|
J'attends vos remarques et propositions.