从ado查询结果中汇总一列字段?

时间:2011-10-29 14:25:23

标签: sql delphi sum

好的,我正在创建一个程序,它利用dbgrid和ado-queries来处理来自Microsoft访问数据库的表。

该计划专为拥有忠诚度计划的企业而设计,会员可以注册,并且必须跟踪购买。这是包含交易的表格:

enter image description here

现在我要做的是运行一个ado查询,该查询将从该表中选择某个成员ID,然后我想从该adoquery的结果中添加所有“PointsAwarded”。所以我可以获得一个会员获得的积分总额。

这似乎很难完成,因为我一直在寻找几天并且没有找到任何有用的东西。

Thanx任何帮助!

2 个答案:

答案 0 :(得分:2)

如果你知道要寻找什么,那就不那么难了。 :)

您可以按特定列进行分组,然后在其他列上使用聚合函数。在这种情况下,我将每个MemberId的所有记录分组在一起,以获得奖励积分的总和:

select
  t.MemberId,
  sum(t.PointsAwarded) as TotalPoints
from
  Transactions t
group by
  t.MemberId

答案 1 :(得分:1)

如果您想获得所有会员的总积分奖励,请使用Golez的答案。

如果您希望PointAwarded为特定成员,那么您只需执行此操作:

SELECT SUM(PointsAwarded) AS TotalPointsAwarded
FROM Transactions
WHERE MemberID = 3

以上示例为您提供会员3的总数。

您希望参数化查询,以便传入变量以获取会员ID。

您希望阅读组件的Parameters属性上的文档,因为它与Delphi版本不同。

但是,一旦您对查询进行了参数化,那么当您调用查询时,就会执行此操作,其中MyADOQuery是组件的名称:

MyADOQuery.Active := False;
MyADOQuery.Parameters.ParamByName('MemberID').Value := 3;
MyADOQuery.Active := True;