• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL Group Order 連結)

SQL Group Order 連結

このQ&Aのポイント
  • SQLエラーの原因となっている要素を特定するため、商品マスターと料金マスターの結合を行い、最新の金額を取得するためのSQL文を作成したい。
  • 商品マスターと料金マスターのデータを連結し、各商品毎のコード、名称、料金マスターの最大開始日のレコードを取得するためのSQL文を作成したい。
  • SQLエラーが発生しているため、商品マスターと料金マスターの結合、GroupBy、日付の昇順ソート、最初の1件の条件を満たすSQL文を作成したい。

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

  • ベストアンサー
回答No.1

下記のようなSQLで求められると思います。 select   SYO.商品コード   ,SYO.名称   ,RYO_1.開始日   ,RYO_1金額 from   商品マスター  SYO   ,料金マスター  RYO_1   ,(     select       商品コード       ,max(開始日)  as MAX_START_DATE     from       料金マスター     group by       商品コード   )        RYO_2 where   SYO.商品コード = RYO_1.料金コード   and RYO_1.商品コード = RYO_2.商品コード   and RYO_1.開始日 = RYO_2.MAX_START_DATE 商品コード、max(開始日)の組み合わせを表す表を内部的に作成して、 それと各テーブルを結びつけて求めます。 他の方法として、over()という分析関数を使う方法もあるのですが 大変失礼な言い方かもしれませんが、現状の理解では 手を出さないほうが無難かもしれません^^; 興味があれば『ORACLE 分析関数 OVER』などで 検索すると出てくると思います。

その他の回答 (1)

回答No.2

select s.コード as コード ,s.名称 as 名称 ,max(r.開始日) as 開始日 ,max(r.金額)keep(dense_rank Last order by r.開始日) as 金額 from 商品マスター s,料金マスター r where s.コード = r.コード group by s.コード,s.名称 ;

関連するQ&A