Sql MS Access-使用带筛选器的DSUM运行总计的子查询
为了在MS Access中生成销售数量的运行总数,我使用了下面的查询,它按预期工作Sql MS Access-使用带筛选器的DSUM运行总计的子查询,sql,ms-access,Sql,Ms Access,为了在MS Access中生成销售数量的运行总数,我使用了下面的查询,它按预期工作 SELECT ID, [Product Line], DSUM("[Qty]","[SalesData]","[Product Line] like '*Electronics*' AND [ID] <=" & [ID]) AS RunningTotal, FROM SalesData WHERE ([Product Line]) Like '*Electronics*'; 此处RunningTo
SELECT ID, [Product Line], DSUM("[Qty]","[SalesData]","[Product Line] like '*Electronics*' AND [ID] <=" & [ID]) AS RunningTotal, FROM SalesData WHERE ([Product Line]) Like '*Electronics*';
此处RunningTotal是计算字段,而不是表字段
电气运行总量不同,电子运行总量不同
运行总量<100的电子产品等产品线的预期产量
ID Product Line Qty RunningTotal
1 Electronics 15 15
3 Samsung Electronics 10 25
6 Electronics Components 18 43
8 Electronics 50 93
你能帮我纠正一下上述问题吗
提前感谢。我建议使用相关子查询,而不是使用域聚合函数,例如众所周知速度非常慢的DSum,例如: 从中选择q.* 选择t.id,t[产品线],t.qty, 选择sumu.qty 来自salesdata u
其中u.[product line]=t.[product line]和上面的u.id脚本工作不一致。此外,runningtotal计算字段列为空。当我运行下面的查询时,我得到了错误的结果。从选择t.id中选择q.*,t.[产品线],t.[数量],从数据u中选择sumu.[数量],其中u.[产品线]=t.[产品线]和u.id@RaviKannan我已更新了上面的答案。请注意,您的示例输出不正确,因为43+50=93而不是83。您的更新脚本在[Product Line]中运行良好,而[Product Line]正是电子产品。我想得到[Product Line]的近似值,即它应该与[Product Line]包含的电子元件匹配,而不是完全匹配的电子元件。我改变了你上面的脚本,其中q.runningtotal<100和t[产品线]类似于电子产品。我用Like替换了Equal,它给出了错误的运行总数,从而导致错误的结果记录。请给我建议解决办法。我已经更新了我的上表数据和预期结果。现在您的查询正按照我的预期工作。我感谢你的出色努力。最后一个问题。请您建议删除product line=Electronics and runningtotal<100的记录。我从*复制上面的查询*中删除了查询,它不起作用。不客气。如果我的答案充分回答了您的问题,请将答案标记为解决方案,如果您觉得合适,请进行投票,以便其他浏览该网站的人可以看到该问题已解决。如果不确定如何执行此操作,请参阅。后续查询属于新问题。谢谢
ID Product Line Qty RunningTotal
1 Electronics 15 15
2 R.K. Electricals 20 20
3 Samsung Electronics 10 25
4 Electricals 30 50
5 Electricals 45 95
6 Electronics Components 18 43
7 Electricals 25 120
8 Electronics 50 93
9 Electricals Machines 65 185
10 Electronics 15 108
11 ABC Electronics Ltd 52 160
12 Electricals 15 200
ID Product Line Qty RunningTotal
1 Electronics 15 15
3 Samsung Electronics 10 25
6 Electronics Components 18 43
8 Electronics 50 93