查询以获得“库存更改”列的运行总计

时间:2015-11-22 12:54:14

标签: sql ms-access

我在MS Access中有一个看起来像这样的表 MS Access printscreen clip

我想要实现的是获得第6个字段,显示截至该日期之前所有更改的总和。

我通过添加SUM IF计算在Excel中轻松实现了这一点,以说明我需要帮助的内容。 MS Exccel Printscreen clip

现在我需要删除Excel并直接在Access中完成。

2 个答案:

答案 0 :(得分:2)

感谢让我了解Dsum的用户Utsav,我设法制作了这个DSum函数,解决了我的问题。

Expr1: DSum("[SumOfInventory Change]";
  "Inventory Report Table";
  "[Part SKU] = '" & [Part SKU] &
  "' AND Date Between #" & Format("2015-01-01";"mm/dd/yyyy") &
  "# And #" & Format([Date];"mm/dd/yyyy") & "#"
)

答案 1 :(得分:2)

考虑运行库存总和的子查询:

有条件地聚合子查询

SELECT t1.[Date], t1.[Part SKU], t1.[SKU Name], t1.[SumOfInventory Change],
   (SELECT SUM(t2.[SumOfInventory Change]) 
     FROM [Inventory Report Table] t2
     WHERE t1.[Date] >= t2.[Date]
     AND t1.[Part SKU] = [t2.Part SKU]) AS [Inventory Level]
FROM [Inventory Report Table] t1

DSum()子查询(使用日期条件的动态条件)

SELECT t1.[Date], t1.[Part SKU], t1.[SKU Name], t1.[SumOfInventory Change],
   DSum("[SumOfInventory Change]", "[Inventory Report Table]", 
        "[Date] >=#" & t1.[Date] & "# AND [Part SKU] ='" & [t2.Part SKU] &"'") AS [Inventory Level]
FROM [Inventory Report Table] t1

如果[Date]存储为字符串而不是日期/时间(来自您的帖子,Access ACE / Jet默认情况下不会以其他RDMS的格式存储日期),请替换{{1单引号。