• 締切済み

sqlの作り方

テーブルAAがありまして、code,rereki,name.....というフィールドなのですが、 code , rereki , name 1 , 1 , aaaaa 1 , 2 , aaaaaa1 1 , 3 , aaaaaa2 2 , 1 , bbbbb 2 , 2 , bbbb-2 3 , 1 , ccccccc 上記の内容ですが同じそれぞれのコードでrerekiの最大値のnameを とるSQLがわからずに悩んでいます、どなたかご教授宜しく御願いします 欲しい結果です 1,3,aaaaaa2 2,2,bbbb-2 3,1,ccccccc

みんなの回答

回答No.2

失礼しました。 カラム名は「rereki」ですね。 こちらが示したSQL、「rireki」になっていました。 エラー発生の原因はそこかと。 で、join~の部分ですが、 select code,max(rereki) as rereki from aa group by code まず、各codeごとに、rerekiの最大値を取得します。これは、 >欲しい結果です 1,3,aaaaaa2 2,2,bbbb-2 3,1,ccccccc のうちの左側2カラム code  max(rereki) ------------------------- 1   3 2   2 3   1 に相当します。 この取得データを一つのテーブルと見立てて 元のテーブルAAと結合しています。

kozoudesu
質問者

お礼

seimurakam様 有難うございました、 select code,max(rereki) as rereki,name from aa group by code だけでうまくデータが取れるようになりました、本当に助かりました

すると、全ての回答が全文表示されます。
回答No.1

はじめまして。 これ、よくあるパターンなんですが、 テーブル一つで完結できそうで意外とできない… 1つでもできる!って方の投稿、自分も参考にしたいです。 以下、テーブル2つ(自己結合ですが)使う方法です。      select     a.code     ,a.rireki     ,a.name from     aa a     join    (         select             code             ,max(rireki)    as rireki         from             aa         group by             code         )   b     on  b.code = a.code         and b.rireki = a.rireki 追記になりますが、Oracleあたりでは分析関数などを用いて このあたり処理できるみたいですね。

kozoudesu
質問者

お礼

早速の回答有難うございました 良くわからないので追質問ですが そのままSQLを流したらエラーになってしましました select a.code,a.rireki,a.name from aa        | select a.code as code,a.rireki as rireki,a.name as name from aa と書かなくてもいいのですか ここまでは理解できますが、すみませんこの後が良くわかりません a join (select code,max(rireki) as rireki from aa group by code) b on b.code = a.code and b.rireki = a.rireki お手数お掛けしますが宜しく御願い致します

すると、全ての回答が全文表示されます。

関連するQ&A