2012-08-15 19 views
11

Esto me da una sola fila (la primera):¿Cómo puedo obtener solo la primera fila en un conjunto de resultados DESPUÉS de ordenar?

SELECT BLA 
FROM BLA 
WHERE BLA 
AND ROWNUM < 2 

Sin embargo, quiero que la más reciente fecha val; Puedo hacer que la primera fila de esta manera:

SELECT BLA 
FROM BLA 
WHERE BLA 
ORDER BY FINALDATE DESC 

Cuando trato de mezclar las dos victorias parciales, sin embargo, no funciona - al parecer el "Seleccionar sólo la primera fila" fuegos de lógica antes de la ordenar por, y luego el orden por es ignorado posteriormente.

+0

¿Por qué no basta con utilizar un grupo de (obtendrá la primera fila)? – GRB73

Respuesta

1

puede anidar sus consultas:

select * from (
    select bla 
    from bla 
    where bla 
    order by finaldate desc 
) 
where rownum < 2 
15

En 12c, aquí está la nueva forma:

select bla 
    from bla 
where bla 
order by finaldate desc 
fetch first 1 rows only; 

Qué bueno es que!

+4

Mi trabajo usa 11g * me lrying * WHYYYYYYYY –

0

Una forma alternativa:

SELECT ... 
FROM bla 
WHERE finalDate = (SELECT MAX(finalDate) FROM bla) AND 
     rownum = 1 
Cuestiones relacionadas