计算收到的物品总数超过一件货物时收到的物品总数

Posted

技术标签:

【中文标题】计算收到的物品总数超过一件货物时收到的物品总数【英文标题】:Calculate total number of items received when item is received on more than one shipment 【发布时间】:2013-07-15 15:34:57 【问题描述】:

我在 Access 2007 中有一组表格,我需要这些表格来显示收到的项目总数。我们使用作业编号作为通用参考(如 ID)根据作业订购物品。

每个作业都需要多个项目。大多数物品都有我们收到的多批货物。每批货物都有一个唯一的收货单号,因此需要单独输入并合计。

我有:

tblJobItems :JobNumber、Item、QtyNeeded tblReceived :JobNumber、Item、QtyRecvd、RTNumber(RT = 接收工单) tblJobs : JobNumber, JobQty(还有更多,但与此问题无关)

(JobQty 并不总是和item 的QtyNeeded 一样。job 就像是运行某种型号的电脑,job qty 是那个型号的多少。item 有时是1:1,例如机箱或电源供应,但可以是 2:1 或 3:1,例如拥有多个硬盘。)

我有一个查询可以很好地显示已下订单的商品数量,但我们想要扩展它(或与其他查询结合)以显示同一行中每个作业编号收到的商品总数。最终我会用这个数字来改变状态和其他功能。

SELECT tblJobItems.JobNumber, tblJobItems.Item, tblJobItems.QTYNeeded, tblJobItems.PartStatus, First(tblJobs.BDT) AS FirstOfBDT, First(DateAdd("ww",-2,[BDT])) AS DueBy
FROM tblJobItems INNER JOIN tblJobs ON tblJobItems.JobNumber = tblJobs.JobNumber
GROUP BY tblJobItems.JobNumber, tblJobItems.Item, tblJobItems.QTYNeeded, tblJobItems.PartStatus;

这会在列表框中显示订购的项目和数量,JobNumber 存储为([Tempvars]![JobNum]),并且列表框仅显示与 JubNumber 匹配的记录。 (tempvar 是全局变量,因此如果对任何人有帮助,可以在查询中使用它)

我不反对让这个问题经过两三个查询才能得到答案。

【问题讨论】:

我确实在查询中使用 IIf 函数和 SUM 找到了解决方案。作为奖励,它会在之前没有值的每一行中放置一个 0,因此看起来不会缺少答案。 我只是不知道我可以对同一个查询中的计算进行计算......我虽然必须运行一个查询然后另一个才能这样做。 感谢 HansUp,仍在学习论坛...这么多年从未使用过它们,只是发现它们有多大用处。 【参考方案1】:

事实证明,我的查询 SQL 中需要的关键部分是:

Sum(tblReceived.ReceivedQTY) AS SumOfReceivedQTY, IIf(IsNull([SumofReceivedQTY]),0,[SumofReceivedQTY]) AS RECQTY

这会汇总数量并在查询中创建一个包含总计的新列。

【讨论】:

以上是关于计算收到的物品总数超过一件货物时收到的物品总数的主要内容,如果未能解决你的问题,请参考以下文章

八.背包问题方案总数

mysql-5 数据检索

Robberies 01背包变形 hdoj

关于存储总数和求平均值的初学者 Java 问题

超棒的DP问题详解之初识动态规划

春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。