質問: tmp.MAX_SHOYOU " ```
回答: 分析関数を使うのが良いでしょう。結果行そのものは集約せずに集約関数の結果を得ることが出来ます。SHOYOUの値が分析関数で求めたCODEとKCODEごとの最大値と等しい行を抽出すればよいです。 ``` SELECT tmp.code ,tmp.name ,tmp.kcode ,tmp.kname ,tmp.shoyou ,tmp.kubun FROM ( SELECT k1.code code ,h1.name name ,k1.kcode kcode ,h2.name kname ,s1.shoyou shoyou ,s1.kubun kubun ,MAX(s1.shoyou) OVER(PARTITION BY k1.code, k1.kcode) max_shoyou FROM 製品構成テーブル k1 LEFT JOIN 品名テーブル h1 ON k1.code = h1.code LEFT JOIN 品名テーブル h2 ON k1.kcode = h2.code LEFT JOIN 所要テーブル s1 ON k1.code = s1.code AND s1.kubun IN ('J', 'T') ) tmp WHERE tmp.shoyou = tmp.max_shoyou ``` 'J' or 'T'は結合条件に指定します。 図でイメージするOracle DatabaseのSQL全集 第3回 分析関数