Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Access 2016)
クエリで上から引算をしていきたい
投稿日時: 19/06/20 15:14:32
投稿者: ぽろんちょ

いつも大変お世話になっております。
 
件名の通り、クエリで上から引算をしていきたいのですが、どのようにすれば良いのかわかりません。
テーブルは「在庫テーブル」と「出荷テーブル」があるとします。
 
在庫テーブル
品目 | ロット | 在庫 |
A   | 1/1  |  100 |
A   | 1/2  |  50 |
A    | 1/3  |  50  |
B   | 1/1  |  200 |
B   | 1/2  |  80 |
B    | 1/3  |  100  |
 
出荷テーブル
品目 | 出荷数 |
A    | 180    |
B    | 250    |
 
導きたいデータ
品目 | ロット | 在庫 | 出荷数 | ← この一番右側の出荷数を計算したいです。
A   | 1/1  |  100 |  100 |
A   | 1/2  |  50 |  50  |
A    | 1/3  |  50  |  30  |
B   | 1/1  |  200 |  200 |
B   | 1/2  |  80 |  50  |
B    | 1/3  |  100  |  0  |
 
ロットの古い方から順に出荷したとして、どのロットをいくつ出荷したかを計算したいです。
どなたかおわかりになる方、ご教授お願いできませんでしょうか。
宜しくお願い致します。
 

回答
投稿日時: 19/06/20 16:57:47
投稿者: sk

引用:
クエリで上から引算をしていきたい

引用:
ロットの古い方から順に出荷したとして、
どのロットをいくつ出荷したかを計算したいです。

( SQL ビュー)
--------------------------------------------------------------------------------
SELECT [在庫テーブル].[品目], 
       [在庫テーブル].[ロット], 
       [在庫テーブル].[在庫], 
       (SELECT CLng(Nz(Sum(tmp.[在庫]),0)) 
          FROM [在庫テーブル] tmp 
         WHERE tmp.[品目] = [在庫テーブル].[品目] 
           AND tmp.[ロット] < [在庫テーブル].[ロット]) AS [前日在庫累計], 
       IIf([前日在庫累計] < [出荷テーブル].[出荷数], 
           IIf([在庫テーブル].[在庫] + [前日在庫累計] <= [出荷テーブル].[出荷数], 
               [在庫テーブル].[在庫], 
               [出荷テーブル].[出荷数] - [前日在庫累計]), 
           0) AS [出荷数] 
FROM [在庫テーブル] 
LEFT JOIN [出荷テーブル] 
ON [在庫テーブル].[品目] = [出荷テーブル].[品目] 
ORDER BY [在庫テーブル].[品目], 
         [在庫テーブル].[ロット];
--------------------------------------------------------------------------------
 
以上のクエリのような実行結果が出ればよい、
ということでしょうか。

投稿日時: 19/06/24 12:00:21
投稿者: ぽろんちょ

>sk様
 
ご返信ありがとうございます。
上記の通り作成したら、望み通りの値を表示することができました!
大変勉強になりました。ありがとうございました!