• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:グループ毎に条件指定で最新の行を取得)

グループごとの最新データ取得の方法

このQ&Aのポイント
  • SQLクエリを使用して、指定した条件でグループごとの最新のデータを取得する方法を教えてください。
  • 例えば、データのIDとRevisionの列があり、指定したRevision以下で最新のデータのみを抽出することをViewで実現したいです。
  • 具体的には、ViewにRevisionの条件を与えて、指定したRevision以下での最新のデータだけを取得したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.3

一筋縄では出来ないですね。 (1)Revision に相当する連番テーブルを用意する。 (2)連番テーブルの値以下のRevisionを求めるViewを作る。 (3)Viewを呼び出すときに連番テーブルの値をWhere句で指定する。 他には表関数を使う方法とかもありそうですが。

ken128jp
質問者

お礼

ご回答ありがとうございました。 単純に条件を渡すのはやはり難しそうですね。 そのことが分かっただけでも、質問して良かったです。 改めましてありがとうございました。

その他の回答 (2)

回答No.2

こんにちは。 viewにAND条件だけ渡すのは無理なので、もうひとつネストして外に出せばいいのでは?

ken128jp
質問者

お礼

ご回答ありがとうございました。

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

このあたりを参考に

参考URL:
http://www.atmarkit.co.jp/fdb/rensai/sqlclinic09/sqlclinic09_1.html
ken128jp
質問者

補足

ご回答ありがとうございました。 分析関数を使用することでデータ抽出自体は実現できるのですが、 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 ← ここに条件を入れたいが、期待通り動作しない

関連するQ&A