- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:グループ毎に条件指定で最新の行を取得)
グループごとの最新データ取得の方法
このQ&Aのポイント
- SQLクエリを使用して、指定した条件でグループごとの最新のデータを取得する方法を教えてください。
- 例えば、データのIDとRevisionの列があり、指定したRevision以下で最新のデータのみを抽出することをViewで実現したいです。
- 具体的には、ViewにRevisionの条件を与えて、指定したRevision以下での最新のデータだけを取得したいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
一筋縄では出来ないですね。 (1)Revision に相当する連番テーブルを用意する。 (2)連番テーブルの値以下のRevisionを求めるViewを作る。 (3)Viewを呼び出すときに連番テーブルの値をWhere句で指定する。 他には表関数を使う方法とかもありそうですが。
その他の回答 (2)
- taka451213
- ベストアンサー率47% (436/922)
回答No.2
こんにちは。 viewにAND条件だけ渡すのは無理なので、もうひとつネストして外に出せばいいのでは?
質問者
お礼
ご回答ありがとうございました。
- SaKaKashi
- ベストアンサー率24% (755/3136)
回答No.1
このあたりを参考に
質問者
補足
ご回答ありがとうございました。 分析関数を使用することでデータ抽出自体は実現できるのですが、 Viewとして定義するところまで実現できないのが実情です。 下記例ではViewの代わりにサブクエリを使用していますが、 サブクエリの外側から条件を指定したく思っています。 SELECT * FROM ( SELECT id ,rev ,ROW_NUMBER() OVER ( PARTITION BY id ORDER BY rev DESC ) AS rank FROM t_a --WHERE -- rev < 4 ← ここに条件を入れると期待通り動作する ) WHERE rank = 1 -- and rev < 4 ← ここに条件を入れたいが、期待通り動作しない
お礼
ご回答ありがとうございました。 単純に条件を渡すのはやはり難しそうですね。 そのことが分かっただけでも、質問して良かったです。 改めましてありがとうございました。