• ベストアンサー

SQLで複数のMAX値の取得

VB2010とAccessを使用しています。SQL初心者です。 SQLである列の最大値を求めたいのですが、『0~99』でのMAX、『100~199』でのMAX…のように 各々の範囲での最大値を求めるようなSQLを一行で書くことができるのでしょうか? やはり各範囲づつSQLを書く必要があるのでしょうか? ご教授お願いします。

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

;を書くまでを一行とするなら select グループ, グループの最大値 from ( select '0~99' AS グループ, max(ある列) AS グループの最大値 where ある列 between 0 and 99 union select '100~199' AS グループ, max(ある列) AS グループの最大値 where ある列 between 100 and 199 union select '200~299' AS グループ, max(ある列) AS グループの最大値 where ある列 between 200 and 299 以下お好きなだけどうぞ ) order by グループ ;

Alshark
質問者

お礼

ありがとうございます。勉強になりました。

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

その他の回答 (2)

回答No.3

こんにちは。 私なりに、質問内容を解釈して、SQLを作成してみました。 SELECT (SELECT MAX(列名1) FROM テーブル名 WHERE 列名1 BETWEEN 0 AND 99) AS '0~99' ,(SELECT MAX(列名2) FROM テーブル名 WHERE 列名2 BETWEEN 100 AND 199) AS '100~199'

Alshark
質問者

お礼

ありがとうございます。 うまく動作しました。

すると、全ての回答が全文表示されます。
  • ky072
  • ベストアンサー率60% (85/140)
回答No.2

範囲外の場合には 0 になるような式を作り、 その MAX を取るという方法はいかがでしょう。 SELECT MAX(CASE WHEN ● BETWEEN 0 AND 99 THEN ● ELSE 0 END) AS M0, MAX(CASE WHEN ● BETWEEN 100 AND 199 THEN ● ELSE 0 END) AS M1, MAX(CASE WHEN ● BETWEEN 200 AND 299 THEN ● ELSE 0 END) AS M2,   : こんな感じで。●は対象の列名です。 Accessは使ったことがないので、できなかったら申し訳ないです。

Alshark
質問者

お礼

ありがとうございます。 ACCESSではCASEが使えないそうです(汗) いろいろな方法があって勉強になります。 今後はACCESS以上のDB目指して頑張ってみたいです

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

関連するQ&A