• ベストアンサー

複数フィールドの一括カウントはできませんか?

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; ではとても処理できそうにないもので・・・。 どなたか、お知恵を頂ければありがたいです。 どうか、よろしくお願い致します。

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

  • ベストアンサー
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

SELECT ID, "field1" as FldName, field1 as fld FROM TableName UNION ALL SELECT ID, "field2", field1 FROM TableName 上記のようなユニオンクエリを使えばよさそうですね。 上記を元にクロス集計クエリを作成するとお望みの結果が得られると思います。

Doe
質問者

お礼

ありがとうございます。 ほしい結果になりました!! フィールドの名称と値を、縦に結合してから、 クロス集計という事ですね。 UNIONクエリの使い方が今一つわからず、 調べている内に、お返事が遅くなりました。 済みませんでした。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

まず、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.値; できあがり

Doe
質問者

お礼

遅い時間にも関わらず、ご回答いただきまして ありがとうございました。 また、私が理解できている事柄から、無理なく 出来るようご配慮頂きまして、ありがとうございます。 フィールド毎にカウントし、最後に全てのカウント 結果を繋げる、という事ですね。 無事、欲しい結果を得ることができました。 本当に、ありがとうございました。

関連するQ&A