分析関数の結果に対して条件をかけるには、サブクエリを利用するしかないのでしょうか?

例えば、以下の様なテーブルがあったとします。

データNO 履歴番号 データ
1     1    aaa
1     2    aaa+
2     1    bbb
3     1    ccc
3     2    ccc+
3     3    ccc++

このテーブルから、各データNOで履歴番号が最大のレコードのみを取得するために、
分析関数で最大履歴番号を取得して、履歴番号が最大履歴番号と等しいという条件をかけるためには、
以下の様なかたちでサブクエリを利用するのがひとつの方法だと思います。

select *
from (
select データNO
, 履歴番号
, max(履歴番号) over( partition by データNO ) as 最大履歴番号
, データ
from テーブル
)
where 履歴番号 = 最大履歴番号

しかし分析関数で得た項目に条件をかけるだけのためにサブクエリを使うというのは、スマートではないように感じます。
group by に対する having のように、分析関数で得た結果に対して条件をかけるための書き方は存在しないのでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2015/03/06 20:50:04

回答0件)

回答はまだありません

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません