【问题标题】:Running Sum Query运行求和查询
【发布时间】:2021-10-04 00:18:04
【问题描述】:

我是 Access 新手,我正在尝试开发自己的库存管理数据库。

我正在尝试进行查询,以显示截至特定日期的现有库存总量。这就是我的桌子的样子:

按照ITEM_ID然后TRANDATE升序排列。我想在 NET 字段旁边添加一个计算字段,该字段将显示特定日期后特定 ITEM_ID 的运行总计。 NET 字段中的负数代表销售,而正数代表购买。我尝试使用 DSUM 函数,因为它被广泛推荐用于创建运行总和字段。我的表情是这样的 DSum([NET],"InvtyTransT", "[ITEM_ID]=" & [ITEM_ID] And "[TRANDATE]<=#" & [TRANDATE] & "#")。但它只显示每条记录中 NET 字段的总数(6827),如下所示:

我需要的是这样的:

(我在excel中使用了一个IF函数来计算这个)

请帮忙。我想我的表达中可能漏掉了什么。我已经尝试过多次修改它,它总是在每条记录中给我相同的错误答案。

提前致谢。

【问题讨论】:

  • 将数据发布为文本表,以便我们可以复制。

标签: sql ms-access


【解决方案1】:

尝试相关子查询。

SELECT t.*, (SELECT SUM(t2.NET)
        from InvtyTransT as t2
        WHERE (t2.TRANDATE <= t.TRANDATE AND t2.ITEM_ID = t.ITEM_ID)
        ) AS rSUM
FROM InvtyTransT AS t;

【讨论】:

  • 您的查询按预期工作。但是我仍然有一个问题。它不适用于落在同一个 TRANDATE 上的事务。它不是在事务之后显示 NET TOTAL,而是在属于特定 ITEM_ID 的相同 TRANDATE 的每条记录上显示 NET TOTAL FOR THE DAY。请看一下这个:dropbox.com/s/x1rihgwe4qpissf/rsum.png?dl=0 也许对 SQL 语句稍作调整就能纠正这个问题?提前致谢
  • @dynamitez 在这种情况下,您需要一个唯一 ID 列,可能是 Auto Numer 字段将满足您的目的。否则,您可以在没有任何唯一 id 字段的情况下在报告中实现运行总和。
  • 你好,我使用了这个查询并且它有效:SELECT T.ITEM_ID, T.TRANDATE, T.DOC_TYPE, T.REF_NO, T.NetPrice, T.NET, SUM(T2.NET) AS QOH FROM InvtyTransT AS T INNER JOIN InvtyTransT AS T2 ON ((T2.REF_NO*1)T.TRANDATE) AND (T2.TRANDATE
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-17
  • 2021-10-15
  • 2010-09-09
  • 2013-09-28
  • 1970-01-01
  • 2020-05-25
相关资源
最近更新 更多