Microsoft Access 掲示板

開始日~終了日の期間で保持しているデータ(金額)を、月毎に分割したい

2 コメント
views
4 フォロー

お読みいただきありがとうございます。
はじめて質問いたします。

開始日 終了日 金額
2020/01/01 2020/03/31 ¥3000 A子
2020/01/01 2020/06/30 ¥1000 B子

上記のようなデータがあります。
見方としては、
A子は2020/01/01~2020/03/31(3ヶ月)の間、
毎月¥3,000をもらっていたとします。

これを下記のように月毎に分割してデータを作成したいのです。
※後でいろいろな集計をしたいため
追加クエリ、作成クエリ、SQL、VBAで1件ずつ作る・・など
想像しましたが、良い方法が浮かびません。
ご教授いただけると助かります!

A子 2020/1月 3000
A子 2020/2月 3000
A子 2020/3月 3000
B子 2020/1月 1000
B子 2020/2月 1000

よろしくお願いします。

enokidake
作成: 2020/12/22 (火) 01:09:44
通報 ...
1

いろいろありますが、SQLと連番テーブルを使う方法を紹介します。

まず、下記のようなテーブルを作成します。

テーブル名 T_連番
フィールド 連番 (数値型)

連番フィールドに 0から始まる連番を入力しします。予想される一人当たりの最大件数まで入力してください。

クエリを新規作成して、現在のテーブルと上記のT_連番を追加します。
クエリのデザインビューで下記のように設定します。

フィールド名前支給日: DateAdd("m",[連番],[開始日])金額連番
テーブルT_支給T_支給T_連番
表示
並べ替え昇順昇順
抽出条件<=DateDiff("m",[開始日],[終了日])

SQL文なら下記になります。

SELECT T_支給.ID, T_支給.名前, DateAdd("m",[連番],[開始日]) AS 支給日, T_支給.金額
FROM T_支給, T_連番
WHERE T_連番.連番<=DateDiff("m",[開始日],[終了日])
ORDER BY T_支給.名前, T_連番.連番;

これでご希望のデータになります。

2
enokidake 2020/12/22 (火) 12:02:52 d37ef@7f037

教えていただいた通りの方法で、希望のデータが作成できました!
自分では全く想像がつかなかった方法で、大変勉強になりました。
素早く教えていただけて本当に助かりました。ありがとうございました!