人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

分析関数の結果に対して条件をかけるには、サブクエリを利用するしかないのでしょうか?
例えば、以下の様なテーブルがあったとします。

データ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 のように、分析関数で得た結果に対して条件をかけるための書き方は存在しないのでしょうか?


●質問者: ku__ra__ge
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :キャンセル
└ 回答数 : 0/0件

回答がありません
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ