- ベストアンサー
SQLで複数のMAX値の取得
VB2010とAccessを使用しています。SQL初心者です。 SQLである列の最大値を求めたいのですが、『0~99』でのMAX、『100~199』でのMAX…のように 各々の範囲での最大値を求めるようなSQLを一行で書くことができるのでしょうか? やはり各範囲づつSQLを書く必要があるのでしょうか? ご教授お願いします。
- Alshark
- お礼率62% (64/103)
- Visual Basic
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
;を書くまでを一行とするなら 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 グループ ;
その他の回答 (2)
- NoMusicNoLife49
- ベストアンサー率63% (14/22)
こんにちは。 私なりに、質問内容を解釈して、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'
お礼
ありがとうございます。 うまく動作しました。
- ky072
- ベストアンサー率60% (85/140)
範囲外の場合には 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は使ったことがないので、できなかったら申し訳ないです。
お礼
ありがとうございます。 ACCESSではCASEが使えないそうです(汗) いろいろな方法があって勉強になります。 今後はACCESS以上のDB目指して頑張ってみたいです
関連するQ&A
- エクセルでSQLを使う
VB6.0でのSQLは 理解しているのですが (アクセスのデータベース宣言して、使ってるんですが) エクセルでSQLを 使うには、データベースの宣言など、必要らしい。 でも、エクセルのデータやら、文字列や式まで、混ざっているシートと、データベースが頭の中で一致せず、困っています。 ある範囲を宣言するんでしょうか
- ベストアンサー
- Visual Basic
- ACCESSでテーブルのMAX値(文字列を除く)をやりたい
ACCESS2000で1テーブル内の項目のMAX値を取りたいのですが、数値ではないのは除外したいです。 どのようにSQLを組んだらいいのでしょうか。 ex) テーブル名:a フィールド名:ID(string型) +--+ |01| +--+ | 2| +--+ |03| +--+ |04| +--+ |05| +--+ |06| +--+ |R1| +--+ 上記の項目でMAX値06を取りたいのですが SQL>select MAX(ID) as MaxID from a とすると「R1」がMAX値になる。 「06」をMAX値として取りたい。
- ベストアンサー
- その他(データベース)
- MAX値を条件にしたSQLで困っています。
MAX値を条件にしたSQLで困っています。 以下のようなデータ(例)があります。 部番A、連番1、明細・・・ 部番A、連番2、明細・・・ 部番A、連番3、明細・・・ 部番A、連番4、明細・・・ 部番B、連番1、明細・・・ 部番B、連番2、明細・・・ 部番単位で、連番が最大であるデータのみを取得したいです。 上記の例だと、 部番A、連番4、明細・・・ 部番B、連番2、明細・・・ の2件です。 SQLをご教授ください。 よろしくお願いします。
- ベストアンサー
- Oracle
- VBとSQLで、、、、
私は最近ソフトウェアの開発に携わることになりました。 私自身プログラミングの経験は全くありません。 何を命じられたのかといいますと、VBとSQLをつかって、サーバー上の データベースにクライアントからアクセスして、ほしいデータだけをもってくる 業務を支援するようなソフトを作るのです。 例えば、ユーザーが日付の範囲だけをいれると、その間に店を訪れた人のすんでい る地域別、さらにそのお客の年代別で何人いるのかというようなものが ボタンひとつでだせるようなものなんです。 まったく知識がなくてとりあえずVBの基本とSQLコマンドの本を片手に やっています。(あと、アクセスでおおよそのデータベースについて学びまし た) で、結局何がいいたいのかと申しますと、VBとSQLを利用したデータベースの 構築に関する良い文献を紹介していただきたいのです。 VBは初心者なのでとりあえず、それようのものを。 あと、ストアドというものを駆使するらしいので、それについての詳しい本を 紹介してください。サイトなんかでもよいです。 それでは、よろしくお願い致します。 (多分、質問の内容もわけのわからないことを言ってるかもしれません^^;)
- ベストアンサー
- Visual Basic
- SQL文のエラー
PostgreSQLの初心者です。よろしくお願いします。 今、日本語ODBCドライバを使ってクライアント側を VB.NETでプログラムを作っています。PostgreSQLは8.1.4です。 レコードの追加をするために、レコードIDのMAX値を 撮るためにプログラム中にSQL sql = "SELECT MAX(user_id) AS MaxID FROM user" を入れて発行したところ、本来ですと「1」が返って こなければいけないのに、 Msgbox(MaxID) を仕込むと「0」が返ってきます。そして、その後に ERROR [HY000] Error while executing the query; ERROR; operator does not exist: # integer というエラーが返ってきます。 先ほどのSQLはリモートで直接PostgreSQLにつなぐと ちゃんと「1」が返ってくるのですが、VB.NET上では うまくいきません。 質問としては2つあります。 1)VB.NET上で実行すると、なぜ「0」が返ってきて しまうのか? 2)エラーメッセージの意味 の2点です。 よろしくお願いします。
- 締切済み
- PostgreSQL
- ActiveRepots1でこんな帳票できますか?
VB6.0 + ActiveReports2.0 + SQL2005 で開発しています。 VB も初心者で ActiveReports も初めてさわりますので、このような 事が可能かのか?ということをお聞きしたいのです。 DBに TableA があり、 商品コード 得意先コード 売上数量 A-001 0001 10 A-001 0002 10 A-002 0001 15 A-002 0002 5 A-002 0003 7 A-003 0004 5 といった内容になっているとします。 ここで、 商品コード 得意先コード A-0001 A-0002 A-0003 0001 10 15 0002 10 5 0003 7 0004 5 : : : : : : : : ページ計 ZZZ9 ZZZ9 ZZZ9 といった感じです。 最終ページにはページ計の次行に総合計を印字したいのです。 商品コードのMAX列数は6列と決めておき、そのMAX列を 越えたら、改ページします。 ACCESSのクロス集計のような感じです。 良い知恵があれば、どうかご教授願います。
- ベストアンサー
- Visual Basic
- SQL文 について教えて下さい
「Access」で下記のように記述するものを「SQL Server」に置き換えた場合、 どのように記述する事になるのでしょうか。 SELECT Max(CLng(mid(TestId,4,10))) AS MAX_pti_patient_id FROM patient_info WHERE TestCd1 = 1 and TestFlg = 1 どなたか分かる方がいましたら教えて下さい。 よろしくお願い致します。
- ベストアンサー
- SQL Server
- SQL INSERTの使い方を教えてください
vb2008でアクセスへデータを書き込む部分のコードを書こうとしているのですが、SQLのINSERT構文を使って連続した10レコードをテーブルへINSERTしたいのですが1つわからないところがあります。例えば、あるフィールドで、1番目のレコードだけアイテムが入り、残りは書き込む必要がない場合、Do~Loopなど使用しINSERT構文にて書き込み処理する場合、どのように条件わけするとすっきり書けるでしょうか・・・?いい感じのロジックがあればご教授願います。
- ベストアンサー
- Visual Basic
- VB2005でSQLデータの更新
こんにちは VB2005初心者ですが SQLのデータ(テーブル)SEQに読み込んで 条件式により 別のテーブルに出力するようなことのDataAdpterを使用したサンプルコードを探しています どなた ご教授ください SQL文では条件式が複雑なため簡単にできそうにありませんので よろしく
- 締切済み
- Visual Basic
- VBを使ってる初心者です【SQL】【Access】
VisualStudio2008で、Access2010のデータベースからデータ抽出を行えるアプリを作っています。 このときSQL文を用いてAccessからデータ抽出を行うんですかね? そもそもVisualStudio、SQL、Accessそれぞれがどのように関係しているのかわかりません。 いくつかサイトを見て回ったのですが・・・ 教えてほしいこと 1. データ抽出アプリを作るにあたってVisualStudio、SQL、Accessの各々がどのような役割を果たすか 2. Accessのデータベースの形式は空or Webどちらが有効なのか 3. VisualStudioでデータの抽出を行う方法 長くなりましたがよろしくお願いします。 開発言語はVBで、私自身は簡単なプログラムであれば理解できるレベルです
- ベストアンサー
- Visual Basic
お礼
ありがとうございます。勉強になりました。