ACCESSでの条件抽出と合計表示について

このQ&Aのポイント
  • ACCESS2000での勤怠データの条件抽出と合計値の表示方法を教えてください。
  • 社員別に訪問時間や移動時間、業務時間などを抽出し、合計値を表示する方法についてお教え願います。
  • データベースのテーブルから異なる条件で抽出したフィールドの合計値を表示する方法を教えてください。
回答を見る
  • ベストアンサー

ACCESSでの異なる条件での抽出と合計について

ACCESS2000にて現在、元となる勤怠データから社員別日別に訪問時間や移動時間、業務時間等を算出していております。その中でテーブルからそれぞれ異なる条件で抽出したフィールドの合計値の表示させ方をお教え願います。 具体的には下記に元データと作成したいデータのレイアウト図を記載します。 (元データ) 社員コード| 日付 |区分|勤務時間|移動時間|合計時間|業務のカウント|訪問のカウント|開始時間 =============================================================================== |1111111 |2013/10/01 |業務| 400 | 120 | 520 | 1 | 0 | 08:00 |1111111 |2013/10/01 |訪問| 400 | 100 | 500 | 0 | 1 | 09:00 |1111111 |2013/10/02 |訪問| 300 | 200 | 500 | 0 | 1 | 09:00 |1111111 |2013/10/03 |業務| 200 | 200 | 400 | 1 | 0 | 08:00 (作成したいデータ) 社員コード| 日付 |勤務時間|移動時間|合計時間|業務のカウント|訪問のカウント|開始時間 =============================================================================== |1111111 |2013/10/01 | 800 | 220 | 1020 | 1 | 1 | 08:00 |1111111 |2013/10/02 | 300 | 200 | 500 | 0 | 1 | 09:00 |1111111 |2013/10/03 | 200 | 200 | 400 | 1 | 0 | 08:00 ちなみに ”開始時間” は 「区分」フィールドの値が ”業務”の時の開始時間と ”訪問”の時の開始時間を比べて時間が早い方を表示させます。 上記でネックなのは 日によって 「区分」フィールドが ”訪問” の場合のみも有り、尚且つ ”業務” の場合のみも有り、更に ”訪問”、”業務”両方が入っている場合もあり、ただ単純に ”業務”のみ と ”訪問”のみのデータをクエリで分けて 結合させると言う訳には行かないところです。 お手数ですが何卒よろしくお願い致します。 |

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

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (295/459)
回答No.1

まず、「元データ」から「区分」以外のフィールドの選択クエリを作ります。 ツールバーの「Σ」ボタンをクリックし、集計行を表示します。 「社員コード」「日付」を グループ化。 「勤務時間」から「訪問のカウント」までは 合計。 「開始時間」を 最小。 必要なら、フィールド名を変更。 以上です。

nori-pharm
質問者

お礼

ご回答ありがとうございました。 助かりました。

関連するQ&A

  • ACCESSのデータ横展開について

    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つ前のレコードの[終了時間]" で算出しております。 お手数ですがよろしくお願いします。

  • Accessで…

    アクセス初心者です。 今、データベースを作っているのですが、テーブルに以下のようなデータがあります。 日付 社員コード1 氏名1 社員コード2 氏名2 12/1  1234      A    2345      B 12/3  2345      B のようにデータが入っているのですが、このデータを、 「社員コード」別に何回入っているかをカウントしたいのです。 どのようにするのがいいでしょうか? よろしくお願いします。

  • サービス登録フォームで開始時間~終了時間の入力

    サービス登録フォームで開始時間~終了時間の入力 クエリを使って開始時間~終了時間の間(フォームで入力された) 働ける職員(T_職員勤務)から抽出してサービス登録フォームに 職員のIDをドロップダウンリストで 表示したいです。 T_職員勤務(テーブル) フィールド名 職員ID 日付 6:30-7:00 6:30-7:00 7:00-7:30 7:30-8:00 8:00-8:30 8:30-9:00 9:00-9:30 9:30-10:00 10:00-10:30 10:30-11:00 11:00-11:30 11:30-12:00 12:00-12:30 12:30-13:00 13:00-13:30 13:30-14:00 14:00-14:30 14:30-15:00 15:00-15:30 15:30-16:00 16:00-16:30 16:30-17:00 17:00-17:30 17:30-18:00 18:00-18:30 18:30-19:00 19:00-19:30 19:30-20:00 20:00-20:30 (6:30-7:00・・・・20:00-20:30のフィールドの値は勤務区分テーブルの勤務区分がはいります。) T_行く時間(テーブル) フィールド名 行く時間CD 利用者ID 職員ID 日付け 開始時間 終了時間 勤務区分(テーブル) フィールド名 勤務区分 区分名 0 休み 1 出勤 3 サービス (ヘルパーの勤務表なのでサービスは訪問介護のことです) T_行く時間(テーブル) 利用者IDは誰(利用者)のところに行くか 勤務区分 1と3の違い 出勤は誰をどの時間担当してもいい あとそれをT_行く時間テーブルに保存すると同時に T_職員勤務(テーブル)6:30-7:00~20:00-20:30のレコードの中の値を 開始時間~終了時間の間の時間帯の分、値を3にしたい 独学で少しやっているのですが、関数やプログラムの苦手な自分にはどう考えていいか エクセルと違うので 書き方がよく分かりません力を貸して ください。お願いします

  • ACCESSで時間の合計を出すには?

    ACCESSでユーザー別、ネットワーク接続時間の合計を出したいのですが、うまくいきません。 元のテーブルに以下のようにデータを入力していて、それを元にクロス集計クエリを使用し、行見出しを[ユーザ名]。 列見出しを[接続日]の「月」をグループ化。 集計する値を[接続時間]とすると、集計方法が「カウント、先頭、最大、最小、最後」となり、「カウント」で実行すると接続時間が1時間を越えているものだけが結果として表示されます。 分、秒まで合計するには、元テーブルの加工が必要なのでしょうか? ============ [ユーザー名][接続日][接続時間] aaa     2008/3/4 20分30秒 aaa     2008/3/4 10分07秒 aaa     2008/5/10 1時間15分21秒 bbb     2008/9/11 2時間2分50秒 bbb     2008/10/10 42分30秒 ============ [ユーザー名][接続時間]はテキスト型[接続日]は日付時間型です。

  • Access2010の質問です。

    値の入力されたフィールド数の合計をクエリで求める方法はありますか? レコードのフィールドに入力されているのは、色々なデータ型がありますが、その中に日付/時刻型で指定しているフィールドが14あります。 その内の10フィールドが対象で、その10フィールドには、年月日が入力されているフィールドと、入力されていないフィールドが混在しています。入力されているフィールドを1カウントとして、入力されているフィールド数の合計を求めたいのですが。 分かる方、是非教えて下さい。 宜しくお願いします。

  • アクセス csv出力 抽出条件

    データベース(アクセス2003)で作成されたファイルがあります。 このファイルのフィールドは"日付"、"時刻"、"設備"、"数値"のようになっています。(設備名は1~4) フィールドの条件を指定して日付ごと、加えて設備別にcsv出力を行いたいと思います。 クエリを用いて抽出条件に日付、設備名を入力してクエリを実行 そしてcsvにエクスポートという形では時間がかかりすぎるため困っています。(データは1日分が8万点ほどで年によっては設備が4つにわかれています。データは途中が抜けていたりしますが2005年~2008年まであります。) どうにかしてもっと効率的な作業を行えないでしょうか?

  • エクセルVBA-複数の条件に一致する値をそれぞれ表示させたいのですが・

    エクセルVBA-複数の条件に一致する値をそれぞれ表示させたいのですが・・・ エクセルVBAの超初心者です。 当初はVLOOKUP関数で作ってみようと思いましたが、データ量が多すぎるのもあり マクロを使ってボタンで一発表示が出来ないものかと思いました。 色々調べてみましたが、時間範囲の表示がわからず行き詰ってしまったので、 どなたか教えてください。宜しくお願いします。 社員区分、勤務種別、勤務開始時間を判別して、条件に一致した値を表示できる 表を作成しようとしています。 例えば、「社員区分が★で勤務種別が夜勤1、勤務開始時間が21:00~23:00の間 で入力した場合は区分1」のように表示したいのです。 シートでいうと次のような感じです。  A1  B1    C1     D1  ★  夜勤1  22:05 ⇒ 区分1  ☆  夜勤2  22:10 ⇒ 区分2  ★  夜勤3  20:00 ⇒ 区分3 セルA1~C1までは手入力をし、その後ボタンを押すとD1のような 結果表示をするように作成したいのです。 社員区分は、★と☆の2通り、勤務種別は3通りです。 ここで面倒なのが、勤務開始時間の範囲です。 夜勤1の勤務開始時間は21:00~23:30の間 夜勤2の勤務開始時間は23:00~24:30の間 夜勤3の勤務開始時間は20:00~21:00の間 と、勤務開始時間が1分刻みに設定されていて、なおかつ夜勤1と夜勤2の 開始時間が23:00~23:30の間、かぶってしまっているのです。 VBAの記述で、時間の範囲表示はどのように記述したら良いのかわからず、 行き詰ってしまいました。。 分かりづらい質問になってしまい大変恐縮ですが、どうぞ良いアドバイスを お願いいたします。

  • 更新クエリでの抽出条件の設定がわかりません

    お世話になります。 Access2010を使っています。 今、TBL_1の社員コードの中で、期間2の日付を、TBL_2の日付フィールドの 値に置換したいです。 TBL_1はIDをオートナンバーで振っており、置換したいレコードは社員コードID値が最大の レコード内の期間2フィールドになります。TBL_2は全社員コードはなく、社員 コードがある場合のみTBL_1の期間2を置換します。 テーブル1名:TBL_1 ID 社員コード 期間1   期間2   1  00123   2012/6/30  2014/3/31 2  00123   2014/4/1   2015/3/31 3  00456   1995/9/15  2008/3/31 4  00789   2001/6/2  2013/3/31  ・ 10 00456   2008/4/1  2016/3/31  ・ 30 00789   2013/4/1  2015/3/31  ・ 50 00123   2015/4/1  2017/3/31  ・ テーブル2名:TBL_2 社員コード 日付      00123   2016/10/31  00456   2015/5/20 上の例では結果として、 IDが10のレコードの期間2を2015/5/20に置換します。 IDが50のレコードの期間2を2016/10/31に置換します。 テーブル1名:TBL_1 ID 社員コード 期間1   期間2   1  00123   2012/6/30  2014/3/31 ←変わらない 2  00123   2014/4/1   2015/3/31 ←変わらない 3  00456   1995/9/15  2008/3/31 ←変わらない 4  00789   2001/6/2  2013/3/31 ←変わらない  ・ 10 00456   2008/4/1  2015/5/20 ←期間2:2015/5/20に  ・ 30 00789   2013/4/1  2015/3/31 ←変わらない  ・ 50 00123   2015/4/1  2016/10/31 ←期間2:2016/10/31に 更新クエリを使えばいいと思っていますが、抽出条件をどのように 書いていいのかわかりません。 恐れ入りますが、宜しくお願い申し上げます。

  • access クエリで1年7か月後の日付を求める

    access2010を使い、ある業務のデータ取りまとめを行っています。 開始日というフィールドに日付が入力されています。 この開始日から、1年7か月後の日付を求める方法を教えてください。 宜しくお願い致します。

  • access2003 抽出条件が持ち越されてしまう

    http://okwave.jp/qa3580875.html ↑にて質問させていただいた者です。  一部繰り返しになりますが、2000種ほどの商品を扱っています。伝票を見ながらフォームから直接売上入力を行いたく思います。 ◆親)売上入力フォーム:売上管理番号/日付/取引先/取引先伝票番号/売上合計金額 ◆子)売上明細フォーム:商品コード/商品名/単価/数量/明細金額 ◆売上入力テーブル:売上管理番号/取引先/日付/取引先伝票番号 ◆売上明細テーブル:明細番号/売上管理番号/商品コード/数量/明細単価 子フォームで商品コードのフィルターとして、 1)親フォームで選択した取引先の商品のみ→[Forms]![売上入力フォーム]![取引先]を導入 2)ワイルドカード「Like "*" & [商品コードの一部を入力] & "*"」 のふたつを使っていますが、うまく動作してくれません。 いったん商品コードを選択すると、明細の次の行に移動しても取引先選択のポップアップが出ず、コンボボックスには同じ選択肢が提示されます。さらに、新しいレコードに移動してもポップアップなし&同じ選択肢が続きます。 この状態を回避する方法を教えてください。 長くなりましたが、どうぞよろしくお願いします。