2016-04-20 10 views
0

ので、同様に、私はいくつかのデータを持っている場合:Oracleの解析窓関数

MyDate LEVEL 
01JAN2016 5.1 
02JAN2016 6.2 
03JAN2016 8.0 
04JAN2016 5.8 

がどのように私は最高のレベルで日付を返すために、ウィンドウ関数を使用することができますか?

Xから(LEVEL BY ORDER)の上に

SELECT MAX(MyDateに該当)...しかし、動作するように見えるdoesntの: 私は考えていました。私はPARTITION BYを使ってみましたが、まだ運がありません。私は本当に最高(LEVEL)が欲しい。

答えて

1
select mydate, level 
from (select mydate, level, row_number() over (order by level desc) rn from x) 
where rn = 1 
1

本当にファンシーな機能を使用したい場合は、 。 。

しかし
select max(date) keep (dense_rank first order by level desc) 
from x; 

、多くの人が書くでしょう:

select x.* 
from (select x.* 
     from x 
     order by level desc 
    ) x 
where rownum = 1; 
+0

笑 - 良い推測を! :-)私はあなたの投稿を見た後に "desc"を追加するように編集しました - 質問の最初の読み方でそれを見逃しました。 – mathguy