たとえばですが、
テーブル名:tbl
日付:日付時刻型
商品名:テキスト型
出庫数:長整数型
入庫数:長整数型
で、
日付 商品名 出庫数 入庫数
2011/10/01 a 20 100
2011/10/02 a 10 1
2011/10/03 a 10
2011/10/04 a 20
2011/10/01 b 50
2011/10/02 b 10
2011/10/03 b 10
2011/10/04 b 30
2011/10/02 a 19
クエリをSQLビューに切り替えて下記をコピペすると
(クエリをデザインビューで開いて右クリックするとコンテキストメニューにあります)
SELECT
tbl.日付,
tbl.商品名,
tbl.出庫数,
tbl.入庫数,
CLng(Nz(DSum("出庫数","tbl","日付 <=# " & [日付] & "# AND 商品名 ='" & [商品名] & "'"),0)) AS 出庫累計,
CLng(Nz(DSum("入庫数","tbl","日付 <=# " & [日付] & "# AND 商品名 ='" & [商品名] & "'"),0)) AS 入庫累計,
入庫累計-出庫累計 AS 在庫
FROM
tbl
ORDER BY
tbl.商品名,
tbl.日付;
で、
このようになります。(レイアウトが崩れてしまうのはご容赦を)
(メモ帳にでも張り付けてフォントをP付ではないMSゴシックなどだと見やすいです)
日付 商品名 出庫数 入庫数 出庫累計 入庫累計 在庫
2011/10/01 a 20 100 20 100 80
2011/10/02 a 19 30 120 90
2011/10/02 a 10 1 30 120 90
2011/10/03 a 10 40 120 80
2011/10/04 a 20 40 140 100
2011/10/01 b 50 0 50 50
2011/10/02 b 10 10 50 40
2011/10/03 b 10 20 50 30
2011/10/04 b 30 20 80 60
ではダメかいな?
デザインビューに切り替えて確認もできます。
商品(コピー用紙)ごとの在庫なら
SELECT
Max(tbl.日付) AS 日付の最大,
tbl.商品名,
SUM(tbl.出庫数) AS 出庫数の合計,
SUM(tbl.入庫数) AS 入庫数の合計,
入庫数の合計-出庫数の合計 AS 在庫
FROM
tbl
GROUP BY
tbl.商品名;
で、
日付の最大 商品名 出庫数の合計 入庫数の合計 在庫
2011/10/04 a 40 140 100
2011/10/04 b 20 80 60
になります。
何となくですがExcel的な考え方でやっているような雰囲気がします。
お礼
回答、ありがとうございます。 一度やってみます。 もう一つ教えていただけるのなら、 前日の更新在庫を、自動的に当日の前在庫にでている ようになっている状況が理想なのですが、お教えいただけないでしょうか?