• ベストアンサー

アクセスでデータの集計方法について教えてください。

基本的なことになるのかもしれませんが、よろしくお願いいたします。 健診関係の仕事をしており、個人コードごとに単独の検査データが大量に有ります。検査の種類は200ほどあります。これを個人ごとに紐づけして集計しなおしたいのです。今まではクロス集計でやっていたのですが、数が限界を超えてしまいクロス集計がエラーになってしまいました(T_T)。具体的に単純化して書きますと、 個人コード 検査コード 検査名 数値 A1111  00001  ○○○ 10 A2222  00001  ○○○ 12 A2222  00002  ●●● 55 A1111  00002  ●●● 50 A3333  00001  ○○○ 15 個人コード 数値1 数値1(検査数値を個人別・検査別に集計)  A1111  10   50   A2222  12   55     A3333  15 データはそれぞれ以下のようなイメージでテーブル管理しており、リレーションでつなげています。 個人コード→個人テーブル 検査数値 →検査テーブル 検査コード→検査コードテーブル ひとつの検査を個人ごとにクエリで抜き出すことは出来るのですが、個人ごとに検査を横に並べていくことがうまくいきません。 ベースになるデータは人数×検査数で20万件ほどあり最終的には400万件ぐらいになりそうなのでクロス集計ではお手上げ状態のようです。そもそもはじめのデータを作る時に個人ごとに紐付けして作れと突っ込まれそうですが、そこは事情があって無理なんです。 どなたかよろしくお願いいたします。

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

  • ベストアンサー
  • beppo
  • ベストアンサー率78% (22/28)
回答No.2

VBAでのコーディングは可能なのでしょうか? 可能なら、それほど難解ではないように思いますが・・・。 VBAがNGだとすると、、 ・Excelへ4回に分けてエクスポート ・ピボットテーブルで集計 ・集計結果をAccessの集計用テーブルにインポート といった手順しか思い浮かばないですね。。 Accessだけだと苦しいと思います。

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

その他の回答 (1)

noname#140971
noname#140971
回答No.1

A=原始データを生のまま保存するデータベース。 B=データを分析するために設計されたデータベース。 で、Bの役割をAに果たさせると無理が生じる。 かといって、AはAで原始データだから改竄するわけにもいかないでしょう。 原始データの登録・参照データベースのAの役割も否定できないと思います。 なぜなら、分析データベースが破損した場合の復旧の唯一の手がかりですから。 し、しかし、データの収集形態とデータの処理のためのデータ構造は異質。 で、で、そこで分析データベースへのインポートアプリケーションの出番。 で、で、分析データベースは、何をどのように分析し参照するかで最適化。 と、普通は、このようかと思います。 例えば、各検診車などは生のデータをデータベースAに保存するでしょう。 で、で、それぞれの検診車ごとにA1,A2・・・ANが。 で、で、分析センターには、A1,A2・・・ANが送られてきます。 で、で、分析センターでは、A1,A2・・・ANをBへとインポート。 と、普通は、このようかと思います。 ところで、AからBへのインポートを擬似的にA内で行うとなると・・・。 それは、データ分析テーブルへの生データの追加処理することを意味します。 複雑なクエリは、必ず、複雑化のある段階でフリーズします。 ですから、クエリでやっている処理をVBでADOを利用してSQLに処理させるのが一番。 で、で、これは、今の処理を単にVBで行うだけのこと。 で、で、これは、一歩でもAデータベースとBデータベースの関係に近づけるアイデア。 考え方では、このようだと思います。

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

関連するQ&A