Accessで時刻当たりの作業人数を導出するクエリについて

Anonymous
2022-11-07T08:42:01+00:00

初めて質問します。

Accessで作業員の作業記録データベースを作成しようとしているのですが、時刻ごとにその時刻作業していた人数を返す上手い方法が思いつきません。

テーブル定義は以下の通りです。

作業記録テーブル

作業員ID
作業区分ID
開始時刻
終了時刻

作業員マスタ

作業員ID
作業員名
会社名

作業区分マスタ

作業区分ID
作業区分1
作業区分2

SELECT COUNT(*) AS 10時

FROM T_作業記録

WHERE #2022/11/7 10:00# BETWEEN 開始時刻 AND 終了時刻

を時刻の数だけ繰り返そうと思ったのですが、「10時」や「11時」といったフィールドができてしまいます。
クエリ結果の理想は「時刻」、「人数」のフィールドがあるレコードを例えば9時から18時まで1時間刻みで作りたいのです。

初心者につき理解不足な点が多々あり申し訳ないですが、見識をお持ちの方いらしたらご協力いただけると助かります。

Microsoft 365 と Office | アクセス | ビジネス向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2022-11-08T02:41:20+00:00

> クエリ結果の理想は「時刻」、「人数」のフィールドがあるレコードを> 例えば9時から18時まで1時間刻みで作りたいのです。

  1. 以下のような構造のテーブル(以下[作業時間帯テーブル])を新たに定義する。

画像

  1. [作業時間帯テーブル]に次のようなレコードを追加する。

画像

  1. 次のような集計クエリを作成する。

( SQL ビュー)

SELECT DateValue([作業記録テーブル].[開始時刻]) AS [作業日付], 
       [作業日付]+[作業時間帯テーブル].[時間帯開始時刻] AS [集計開始日時], 
       [作業日付]+[作業時間帯テーブル].[時間帯終了時刻] AS [集計終了日時], 
       Sum(IIf([作業記録テーブル].[終了時刻] <= [集計開始日時] OR [作業記録テーブル].[開始時刻] > [集計終了日時],0,1)) AS [作業人数] 
FROM [作業記録テーブル], 
     [作業時間帯テーブル]
WHERE [作業記録テーブル].[開始時刻] Is Not Null 
  AND [作業記録テーブル].[終了時刻] Is Not Null 
GROUP BY DateValue([作業記録テーブル].[開始時刻]), 
         [作業時間帯テーブル].[時間帯開始時刻], 
         [作業時間帯テーブル].[時間帯終了時刻] 
ORDER BY DateValue([作業記録テーブル].[開始時刻]), 
         [作業時間帯テーブル].[時間帯開始時刻];

この回答は役に立ちましたか?

0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2022-11-08T03:05:48+00:00

    まさにやりたかったことができました!

    ありがとうございます。

    大変助かりました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません