AccessのSQL文で入荷数と使用履歴から現在残数を出すSQL文を作成しています。
Dsum関数で作ったSQL文をサブクエリに変更する方法が分かりません。
クエリで、一定日の物品IDごと・使用者IDごとの使用数と、
一定日での物品IDごとの残数を出します。(下記では日付は5/13としています)
どのように変更すればよいでしょうか。
よろしくお願いします。
入荷数テーブル
物品ID | 入庫数 |
---|---|
001 | 300 |
002 | 250 |
使用履歴テーブル
物品ID | 使用者ID | 使用数 | 使用日 |
---|---|---|---|
001 | 001 | 20 | 2022/05/09 |
001 | 002 | 10 | 2022/05/09 |
001 | 001 | 30 | 2022/05/11 |
001 | 001 | 10 | 2022/05/13 |
001 | 002 | 20 | 2022/05/13 |
002 | 003 | 10 | 2022/05/13 |
SQL
1SELECT 使用履歴.物品ID, 使用履歴.使用者ID, 使用履歴.使用数, 使用履歴.使用日, [入荷数]-Nz(DSum("使用数","使用履歴","物品ID='" & [使用履歴].[物品ID] & "' AND 使用日<#2022/5/13#"),0) AS 残数 2FROM 使用履歴 INNER JOIN 入荷数 ON 使用履歴.物品ID = 入荷数.物品ID 3WHERE (((使用履歴.使用日)=#5/13/2022#)) 4ORDER BY 使用履歴.物品ID, 使用履歴.使用者ID;
実行結果
物品ID | 使用ID | 使用数 | 使用日 | 残数 |
---|---|---|---|---|
001 | 001 | 10 | 2022/05/13 | 240 |
001 | 002 | 20 | 2022/05/13 | 240 |
002 | 003 | 10 | 2022/05/13 | 250 |
DSum関数の部分をクエリにしました。
SQL
1SELECT 使用履歴.物品ID, Sum(使用履歴.使用数) AS 使用数の合計 2FROM 使用履歴 3WHERE (((使用履歴.[使用日])<#5/13/2022#)) 4GROUP BY 使用履歴.物品ID;

回答1件
あなたの回答
tips
プレビュー