- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL Group Order 連結)
SQL Group Order 連結
このQ&Aのポイント
- SQLエラーの原因となっている要素を特定するため、商品マスターと料金マスターの結合を行い、最新の金額を取得するためのSQL文を作成したい。
- 商品マスターと料金マスターのデータを連結し、各商品毎のコード、名称、料金マスターの最大開始日のレコードを取得するためのSQL文を作成したい。
- SQLエラーが発生しているため、商品マスターと料金マスターの結合、GroupBy、日付の昇順ソート、最初の1件の条件を満たすSQL文を作成したい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
下記のような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)
- o123459876
- ベストアンサー率59% (19/32)
回答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.名称 ;