• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数テーブルのMAX値の行データを取得したい)

複数テーブルのMAX値の行データを取得する方法

このQ&Aのポイント
  • 複数のテーブル(A、B、C)から特定の条件下でMAX値の行データを取得する方法について解説します。
  • SAGYO_NOを指定したA、B、Cのうちで、SAGYO_DTが最新の行のSAGYO_DT、TANTO、NAIYOを一回のSQLで取得する方法を紹介します。
  • 質問文章ではうまくできないと述べられていますが、本記事で解説する方法を使うことで問題を解決することができます。

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

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

SELECT SAGYO_NO,SAGYO_DT,TANTO,NAIYO FROM ( SELECT U.*, RANK() OVER( ORDER BY SAGYO_DT DESC) RNK FROM ( SELECT * FROM (SELECT * FROM テーブルA WHERE SAGYO_NO = '01' UNION ALL SELECT * FROM テーブルB WHERE SAGYO_NO = '01') UNION ALL SELECT * FROM テーブルC WHERE SAGYO_NO = '01' ) U ) WHERE RNK=1;

kokondou
質問者

お礼

ありがとうございます。 参考になりました。

その他の回答 (2)

  • a_ka_
  • ベストアンサー率16% (1/6)
回答No.3

No.1の方の回答に少し条件追加m(_ _)m select * from ( select rownum,A.* from ( --テーブルAのMAXの日付のレコード抽出 select SAGYO_DT,TANTO,NAIYO from テーブルA where SAGYO_DT in(select max(SAGYO_DT) from テーブルA) and SAGYO_NO = '01' union all --テーブルBのMAXの日付のレコード抽出 select SAGYO_DT,TANTO,NAIYO from テーブルB where SAGYO_DT in(select max(SAGYO_DT) from テーブルB) and SAGYO_NO = '01' union all --テーブルCのMAXの日付のレコード抽出 select SAGYO_DT,TANTO,NAIYO from テーブルC where SAGYO_DT in(select max(SAGYO_DT) from テーブルC) and SAGYO_NO = '01' ) A --降順で並び替え order by SAGYO_DT desc) where rownum = 1;

kokondou
質問者

お礼

ありがとうございます。 参考になりました。

回答No.1

こんばんは。 レスポンス的には微妙ですが・・・。 UNION して、 ORDER BY して、 ROWNUM = 1 ですかね・・・。

kokondou
質問者

お礼

ありがとうございます。 参考になりました。

関連するQ&A