• ベストアンサー

SQL GROUP BY

SQLについてお聞きしたいです。番号カラムの中で最大の数字をもつフィールドと 同じコードを持つデータを、表から全て取得したいと思っているのですが 書き出すとGROUP BYの式が間違っているというエラーが出てしまいます。 SELECT * FROM 表 GROUP BY コード HAVING MAX(番号) = コード どう調べればいいのか分からず四苦八苦しています。どこを直せばよいでしょうか?

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

  • ベストアンサー
  • eisai
  • ベストアンサー率36% (14/38)
回答No.1

SELECT * FROM 表 WHERE コード IN( SELECT コード FROM 表 GROUP BY コード HAVING MAX(番号) = コード ); でどうでしょうか。 GROUP BYを使うときは、SELECTするカラムと同一でなくてはなりません。 もうちょっといい方法もあるように思いますが。

kp-umum
質問者

お礼

ありがとうございます! 試してみます

kp-umum
質問者

補足

ありがとうございます。参考にさせていてだき書き直してみましたが 右カッコがありませんとエラーになってしまいました…

その他の回答 (2)

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.3

SELECT * FROM 表 WHERE コード = ( SELECT コード FROM (SELECT コード, 番号, MAX(番号) OVER() max番号 FROM 表) WHERE 番号 = max番号 ); とかでしょうか。

kp-umum
質問者

お礼

ありがとうございます! 試してみます

回答No.2

SELECT * FROM 表 WHERE 番号=(SELECT MAX(番号) FROM 表) です。

kp-umum
質問者

お礼

ありがとうございます! 試してみます

kp-umum
質問者

補足

ありがとうございます。コードはどこに入れ込めばよいでしょうか?

関連するQ&A