2012-08-15 10 views
11

Questo mi dà solo una riga (la prima):Come posso ottenere solo la prima riga in un set di risultati DOPO l'ordine?

SELECT BLA 
FROM BLA 
WHERE BLA 
AND ROWNUM < 2 

Tuttavia, voglio il più recente val data; Posso fare che la prima riga in questo modo:

SELECT BLA 
FROM BLA 
WHERE BLA 
ORDER BY FINALDATE DESC 

Quando cerco di mescolare i due vittorie parziali, però, non funziona - a quanto pare il "Selezionare solo la prima riga" fuochi di logica prima la ordina per, quindi l'ordine per viene successivamente ignorato.

+0

Perché non usare semplicemente un gruppo (si otterrà la prima fila)? – GRB73

risposta

1

È possibile nidificare le vostre domande:

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

In 12c, ecco il nuovo modo:

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

Che bello è che!

+4

Il mio lavoro utilizza 11g * me che piange * WHYYYYYY –

0

Un modo alternativo:

SELECT ... 
FROM bla 
WHERE finalDate = (SELECT MAX(finalDate) FROM bla) AND 
     rownum = 1 
Problemi correlati