如何将查询出的数据进行求和(50分)

  • 主题发起人 主题发起人 tullip
  • 开始时间 开始时间
T

tullip

Unregistered / Unconfirmed
GUEST, unregistred user!
我用query1.Close;{首先关闭query1}
query1.SQL.Clear;{置空SQL语句}
query1.SQL.Add('select *');
query1.SQL.Add('from claim_data');
query1.SQL.Add('where claim_data.部门=:p1');
query1.ParamByName('p1').AsString:=ComboBox1.Text;
query1.Prepare;{准备展开query1语句}
query1.Open;{展开}
语句进行查询
然后用
query1.Close;
query1.Params.ParamValues['p1']:=ComboBox1.text;
query1.Open;
form4.qrlabel2.caption:=form5.ComboBox1.text;
form4.quickrep1.preview;
进行打印,本人想在打印中将金额进行数据求和,我该怎么做,请您给我详细的程序代码
我在线等待谢谢!,
 
你可以在sql里面sum
也可以把所有的值在程序里面累加
 
在SQL里面写,我给你一个我以前写的存储过程的例子
CREATE PROCEDURE [dbo].[getCJFZSF]
@cj varchar(50),
@Fc varchar(50)
AS
select ma.fc,ma.cj,ma.hhname,hi.jf,hi.dong,hi.hao,ha.czzj,ha.sczj,ha.fzhj,hi.js,
(select isnull(symj,0)from halist where houseid=hi.houseid and hhid=ma.id)as symj,
(select isnull(czmj,0)from halist where houseid=hi.houseid and hhid=ma.id)as czmj,
(select isnull(sum(symj),0)from halist where houseid=hi.houseid and hhid=ma.id)as totsymj,
(select isnull(sum(czmj),0)from halist where houseid=hi.houseid and hhid=ma.id)as totczmj
from masterinfo ma inner join halist ha
on ma.id=ha.hhid inner join houseinfo hi
on hi.houseid=ha.houseid
where ma.cj=RTrim(@cj) and ma.fc=RTrim(@fc)
order by hi.jf,hi.dong,hi.hao
你看到里面的sum了吧,就用它来求一个字段的所有值的和。
 
qdlover能具体一下吗
 
举一个例子:
select sum(商品数量) as 总数量 From 商品库存表
这可是基本的数据库知识
建议看一看
<<数据库导论>>一书,就是大学本科的数据库课的教科书
 
我知道用SUM
我的SQL用的是
select sum(赔偿金额) as 合计 from claim_data
但是他算出来的数是我表里的所有数据的总合,并不是我查询出来的数据的总合呀
 
可以直接用报表工具对要打印的数据求和
或是
select sum(赔偿金额) as 合计 from claim_data where claim_data.部门=:p1
 
你定义一个变量prince_sum
然后在循环里面把你要统计的
prince_sum:=prince_sum+要统计的字段值;
不就行了吗?
 
我对你的说法不是很了解,要那些数据SUM,和你的例子有联系吗
 
select sum(赔偿金额) as 合计 from claim_data Where 赔偿金额>100
加一个Where就好了!
 
在打印中
用报表工具的事件
 
你可以将你查询的结果先保存到一张临时表里面,在对这张表操作就可以了
 
上面讲的我试了,都不好用
 
你用的是SQL2000吗?如果是就方便一些。它有专门的分组汇总语句。不是简单的sum等。
 
我用的是DELPHI字带Database Desktop
 
查询时可以用GROUP BY来求和,就不是对所有的求和了。
 
nickylin你好:
可以给我写一个例子吗?
 
这个例子太难了,因为不知道你要出来的是什么字段,比如你是
select a,b,sum(a) as C From Table1 Group by ...

select a,sum(a) as C From Table1 Group by ...
是全然不同的,如果你不需要group,可以用子查询实现,其实很简单,关键是你
要的效果
比如这样
select * , ISNULL((Select SUM(mytable1.a) From table1 as mytable1 ),0) AS 合計
from table1
 
可以在quickrep1的事件Beforeprint中进行求和!
 

Similar threads

后退
顶部