プロが教えるわが家の防犯対策術!

ACCESS2000にて現在、営業担当者の勤怠データを集計しております。
勤怠データから ”訪問時間”、”移動時間”、”業務時間” を計算し

(1)営業担当者別の日別の ”訪問時間”、”移動時間”、”業務時間”の合計値を出す。
(2) 上記(1)のデータ更に ”1件目の訪問時間”、”2件目の訪問時間”、・・・・・・・ と言う様に
   その日の各訪問時間も加える。

上記内容にて作業をしておりますが、上記(1)については 集計クエリ等を使用して作成出来ました。
しかし (2)については
’1.各訪問時間のデータをどうやってフィールドとして作成するか’
’2.集計クエリで作成した合計値と明細データ(各訪問時間)をどの様にして1レコードにするのか’
が解らず困っております。 上記2点お解りであれば教えて頂ければと思います。

尚、今回の元データと 求めれているデータのイメージを下記に記載します。

(元データ)

社員コード| 日付 |区分|開始時間|終了時間|連番|G連番※|
============================================================
|1111111 |2013/10/01 |業務| 08:00 | 09:00 | 1| 1 |
|1111111 |2013/10/01 |訪問| 09:10 | 09:30 | 2| 2 |
|1111111 |2013/10/01 |訪問| 10:00 | 14:00 | 3| 3 |
|1111111 |2013/10/01 |業務| 15:00 | 17:00 | 4| 4 |
|2222222 |2013/10/01 |業務| 08:00 | 09:00 | 5| 1 |
|2222222 |2013/10/01 |訪問| 10:00 | 15:00 | 6| 2 |
|2222222 |2013/10/01 |訪問| 15:30 | 16:00 | 7| 3 |
|2222222 |2013/10/01 |業務| 16:30 | 17:00 | 8| 4 |

※G連番は 担当者の日別の勤怠明細に振られた連番

上記のようなテーブルのデータから

(求められているデータ)

社員コード| 日付 |訪問時間合計|移動時間合計|業務時間合計|1件目訪問時間|2件目訪問時間
==================================================================================
|1111111 |2013/10/01|    260|    100|   180 |    20 | 240
|2222222 |2013/10/01|    330|    120|   90 |    300 | 30

上記の様データを求め様としております。
尚、上記の時間単位は”分”で、移動時間については"[開始時間]-1つ前のレコードの[終了時間]"
で算出しております。

お手数ですがよろしくお願いします。

A 回答 (1件)

(1)とは別に、(2)のデータを作るためのクロス集計クエリーを作成し、二つを社員コード、日付でリンクし、それぞれをフィールドを結合させます。

この時、クロス集計クエリーは、*で全フィールを追加します。これは、クロス集計で作成されるフィールドはその都度変化するので、フィールド名を特定できない事への対応です。
以下に具体的に書いてみます。
先ず(2)に必要なデータを求めるクエリーとして、社員コード、日付、訪問名:[区分] & ([Gコード]-1),業務時間: DateDeff("n",[開始時間],[終了時間])として、区分="訪問"だけを選択し、下記データのダイナセットを作成します。

社員コード| 日付 |訪問名|業務時間
====================================
|1111111 |2013/10/01 |訪問1 | 20
|1111111 |2013/10/01 |訪問2 | 240
|2222222 |2013/10/01 |訪問1 | 60
|2222222 |2013/10/01 |訪問2 | 30

次にこのクエリーを元に、行見出し:社員コード、日付、列見出し:訪問名、集計値:業務時間としたクロス集計を行います。この結果として、下記データのダイナセットが作成されます。
社員コード| 日付 |訪問1|訪問2
====================================
|1111111 |2013/10/01 |20 | 240
|2222222 |2013/10/01 |60 | 30
(1)の集計クエリーと上記クロス集計クエリーを社員コード、日付で連結し、(1)から社員コード、日付を除くフィールド、クロス集計からは*を使って全フィールドを追加、結合したクエリーを作成すれば、目的の結果が得られます。確認して下さい。社員フィールド、日付フィールドの位置が中程になってしまいますが、訪問数がその都度変化することに対応するとこうなります。不明点があれば補足ください。
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
お送り頂きました回答内容で正しく処理できる様になりました。
本当に有難うございました。

お礼日時:2013/11/25 10:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す