
下記のようなグループ化した結果を表示するSQL文を作りました。
SELECT メーカコード FROM 部品表 GROUP BY メーカコード, 部品番号 HAVING ((部品番号)="BUHIN1")
これを実行するとちゃんと結果が出るのですが、その結果の件数を求めるにはどのようなSQL文を追加すれば宜しいのでしょうか? COUNT文を使うと出来そうなのですが、
SELECT メーカコード, COUNT(メーカコード) AS CNT FROM 部品表 GROUP BY メーカコード, 部品番号 HAVING ((部品番号)="BUHIN1")
とやるとメーカコードの個別件数が表示されてしまいます。
どうぞよろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちわ。
Oracle であれば、こんな書き方ができるかと思います。
SQL> SELECT COUNT(*) FROM (SELECT メーカコード FROM 部品表 GROUP BY メーカコード, 部品番号 HAVING ((部品番号)='BUHIN1'));
でも件数を取得するのであれば、わざわざSQL 文を発行
するよりも、SQL%ROWCOUNT (PL/SQL) や、
sqlca.sqlerrd[2] (Pro*C) を使った方が DB に余計な負荷がかからなくて
良いと思います。
この回答への補足
早速のご回答ありがとうございます!
私の使用環境は、Access97 です。
教えて頂いた SELECT COUNT(*) FROM (ぐるーぷ化のSQL) をSQL Serverに対し実行するとFROM文の誤りです、と表示されてしまいます。
Accessならクエリで段組みすれば解決しますが、将来的にSQL Serverへ接続する事を考え、SQL文のみで解決しようと思っております。
現在はレコードセット取得後、RecordCountプロパティにてデータ件数を調べています。
COUNT文を使ったほうが負荷が少ないと思ったのですがそんな事もなさそうですね・・。
No.4
- 回答日時:
AccessやSQL Serverでできるかどうかわかりませんが、
Oracleの場合は以下のようなサブクエリーを使えます。
SELECT COUNT(*) FROM (
SELECT メーカコード
FROM 部品表
GROUP BY メーカコード, 部品番号
HAVING ((部品番号)="BUHIN1")
)
ご回答ありがとうございます!急な仕事でご返答が遅くなり申し訳ありません。
Accessですと上記のSQL文は実行できませんでした。
Accessのサブクエリーの使い方を調べてみます。
どうもありがとうございました。
No.3
- 回答日時:
ちょっと思ったのですが
SELECT メーカコード FROM 部品表 GROUP BY メーカコード, 部品番号 HAVING ((部品番号)="BUHIN1")
のクエリーを作成してそのクエリーを元に集計関数を使用したクエリーを作成するのはどうでしょう?
例えば
SELECT count(メーカコード) as カウント FROM 部品表 GROUP BY メーカコード, 部品番号 HAVING ((部品番号)="BUHIN1")
->クエリー1
select count(カウント) from クエリー1
質問のいとにそっています&スマートでないですかね...。
ご回答ありがとうございます!お返事が遅くなり申し訳ありません。
現在手元で確認できる環境ではない為実行できませんが、
Accessのサブクエリーの使い方を参考にさせていただきます。
どうもありがとうございました!
No.2
- 回答日時:
やりたいことは、
「部品番号が"BUHIN1"である部品(レコード)を持つメーカの数の抽出」
ということでよろしいでしょうか?
手元にAccessが無いので、確認できませんが、一般的には下記の様なSQLで抽出できると思います。
-----------------------------------------
SELECT count(DISTINCT メーカコード) FROM 部品表 WHERE ((部品番号)="BUHIN1");
-----------------------------------------
部品番号 = "BUHIN1" の条件はグループ化してもしなくても影響がないので、Where句でも問題ありません。
この回答への補足
ご回答ありがとうございます!
やりたいことはおっしゃる通りです。
教えて頂いたSQL文をAccess97で実行したところ、エラーになってしまいました。
試しに DISTINCT を COUNT の前に配置したところエラーは出なくなったのですが、正しい結果が出てきません。
グループ化しなくてもよい方法で再度考えてみたいと思います。ありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームで検索 エラーの表示...
-
MySQLで改行を含む文の登録のし...
-
以下のようなSQLについて教えて...
-
改行コードを削除して取得する...
-
「直需」の意味を教えてください
-
ACCESS検索★ある文字を複数のフ...
-
Excel 2019 のピボットテーブル...
-
Accessでテーブル名やクエリ名...
-
テーブルの存在チェックについて
-
Accessのフィールド数が255しか...
-
日本語のテーブル名、カラム名...
-
Oracle 2つのDate型の値の差を...
-
Oracleのビュー作成時に「指定...
-
Accessでコードを入れると名前...
-
Accessのクエリでデータの入力...
-
SUBSTRING 関数に渡した長さの...
-
Access クロス集計クエリについて
-
ACCESSでの改行コード
-
エクセルグラフの凡例スペース
-
Vbaでアクセスからエクセルにリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLでグループ化した結果の件数...
-
MySQLで改行を含む文の登録のし...
-
項目名の制限について
-
フォームで検索 エラーの表示...
-
列名無効について
-
Accessで期間指定の売上合計と...
-
ORA-01722: 数値が無効です
-
改行コードを削除して取得する...
-
縦表示データを列として取得す...
-
DATA 集計
-
SQL抽出方法:売上Tを集計した...
-
SQLServerにおける累積、累計取...
-
オラクルSQLの累計値取得方法に...
-
DB設計
-
SQL抽出方法に悩んでいます④
-
以下のようなSQLについて教えて...
-
SQL抽出方法に悩んでいます。 S...
-
インサート文での条件の指定に...
-
ORACLEのUPDATEについて...
-
SQLでNOT INと!=ALLの違い
おすすめ情報