Première erreur dans :
WHERE rownum<=1 ORDER BY DATE_RESERV DESC
rownum est évalué avant le ORDER BY, donc il faut toujours trier d'abord dans une sous requête avant de filtrer avec rownum.
Après quel est l'intérêt d'avoir les résultats sur 1 seule ligne ? c'est contre performant et il est préférable que ce soit le langage client (java,php,pl/sql....) qui pivote les lignes.
Si tu n'as vraiment pas le choix tu peux utiliser le code suivant :
1 2 3 4 5 6 7 8 9 10
| select
max(case when t2.rn = 1 then t2.RESERV_ID end) as RESERV_ID_1,
max(case when t2.rn = 1 then t2.DATE_RESERV end) as DATE_RESERV_1,
max(case when t2.rn = 1 then t2.NBPERS end) as NBPERS_1,
max(case when t2.rn = 2 then t2.RESERV_ID end) as RESERV_ID_2,
max(case when t2.rn = 2 then t2.DATE_RESERV end) as DATE_RESERV_2,
max(case when t2.rn = 2 then t2.NBPERS end) as NBPERS_2
from
(select t.*, row_number() over (order by date_reserv desc) as rn from t) t2
where t2.rn <= 2 |
Partager