- ベストアンサー
複数フィールドの一括カウントはできませんか?
MS-ACCESS2000です。 ID|field1 |field2|・・・ -------------------- 1 |10 |30 | 2 |20 |10 | 3 |30 |20 | 4 |10 |20 | 5 |30 |20 | ・ |10 |30 | ・ |30 |20 | ・ |10 |10 | 上記のようなテーブルについて、各フィールド毎の、 10、20、30それぞれの件数カウントしたいんです。 得たい結果としては、以下のようなものです。 |field1|field2|・・・ -------------------- 10|5(件) |30(件)| 20|11(件)|9(件) | 30|7(件) |22(件)| このフィールド数ですが、全部で200ありまして、 以前ここの回答で拝見した、 SELECT point, count(*) FROM Point GROUP BY point.point; ではとても処理できそうにないもので・・・。 どなたか、お知恵を頂ければありがたいです。 どうか、よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
SELECT ID, "field1" as FldName, field1 as fld FROM TableName UNION ALL SELECT ID, "field2", field1 FROM TableName 上記のようなユニオンクエリを使えばよさそうですね。 上記を元にクロス集計クエリを作成するとお望みの結果が得られると思います。
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
まず、2つのクエリを作成します。 クエリ1 SELECT Field1 AS 値, COUNT(Field1) AS 個数 FROM Point GROUP BY Field1; クエリ2 SELECT Field2 AS 値, COUNT(Field2) AS 個数 FROM Point GROUP BY Field2; その後で、2つのクエリから選択クエリを作ります。 SELECT クエリ1.値 AS 数値, クエリ1.個数 AS field1, クエリ2.個数 AS field2 FROM クエリ1, クエリ2 WHERE クエリ1.値=クエリ2.値; できあがり
お礼
遅い時間にも関わらず、ご回答いただきまして ありがとうございました。 また、私が理解できている事柄から、無理なく 出来るようご配慮頂きまして、ありがとうございます。 フィールド毎にカウントし、最後に全てのカウント 結果を繋げる、という事ですね。 無事、欲しい結果を得ることができました。 本当に、ありがとうございました。
お礼
ありがとうございます。 ほしい結果になりました!! フィールドの名称と値を、縦に結合してから、 クロス集計という事ですね。 UNIONクエリの使い方が今一つわからず、 調べている内に、お返事が遅くなりました。 済みませんでした。