- ベストアンサー
SQL GROUP BY
SQLについてお聞きしたいです。番号カラムの中で最大の数字をもつフィールドと 同じコードを持つデータを、表から全て取得したいと思っているのですが 書き出すとGROUP BYの式が間違っているというエラーが出てしまいます。 SELECT * FROM 表 GROUP BY コード HAVING MAX(番号) = コード どう調べればいいのか分からず四苦八苦しています。どこを直せばよいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
SELECT * FROM 表 WHERE コード IN( SELECT コード FROM 表 GROUP BY コード HAVING MAX(番号) = コード ); でどうでしょうか。 GROUP BYを使うときは、SELECTするカラムと同一でなくてはなりません。 もうちょっといい方法もあるように思いますが。
その他の回答 (2)
- yamada_g
- ベストアンサー率68% (258/374)
回答No.3
SELECT * FROM 表 WHERE コード = ( SELECT コード FROM (SELECT コード, 番号, MAX(番号) OVER() max番号 FROM 表) WHERE 番号 = max番号 ); とかでしょうか。
質問者
お礼
ありがとうございます! 試してみます
- 原沢 信道(@nharasawa)
- ベストアンサー率53% (90/168)
回答No.2
SELECT * FROM 表 WHERE 番号=(SELECT MAX(番号) FROM 表) です。
質問者
お礼
ありがとうございます! 試してみます
質問者
補足
ありがとうございます。コードはどこに入れ込めばよいでしょうか?
お礼
ありがとうございます! 試してみます
補足
ありがとうございます。参考にさせていてだき書き直してみましたが 右カッコがありませんとエラーになってしまいました…