我想使用sql语句来查询一条记录中的各个字段中的最大值、最小值以及除去0值以外的所有数值的平均值(在这条记录中,除了有数值的字段外,还有文本的字段)。
我知道,sql语句可以使用min、max、count等函数来计算相关值,但它是对一个表中的纵向的多条记录进行计算,而我的这个要求是按照表中一条记录即横向的来进行计算。
我是一个初学者,问题可能有点简单,请大家不要笑话我。
我知道,sql语句可以使用min、max、count等函数来计算相关值,但它是对一个表中的纵向的多条记录进行计算,而我的这个要求是按照表中一条记录即横向的来进行计算。
我是一个初学者,问题可能有点简单,请大家不要笑话我。
解决方案 »
- 急急急!!!
- 我有个关于INFOPOWER中TWWDBGRID的问题请教
- 求救,请问如何取的打印机缓存里的数据
- 在delphi7下,怎么使用MD5加密???
- 请问各位如何控制TStringGrid组件各列的显示格式?
- 再请教一个简单问题(有关联合类型)
- 大家帮我看看这样一个系统用什么样的解决方案
- 如何捕捉 Sql Server 连接不通的错误?
- 怎么去掉那些*.~pas,*.~dfm,*.ddp?
- 没有人会把汉字转化为byte啊!!用keybd-event输出么????有人会么???
- 请问ListBox的Canvas的BrushCopy()和CopyRect()在功能有什么区别吗?欢迎讨论
- 在delphi7里,QuickReport组件放在什么位置了,我怎么找不到啊。:(
这在SQL语句中还没法实现,你可以把记录读出来后,自己在程序中进行处理。
minvalue,
avervalue)来在ONCALCULATEFIELD中求
求最大值、最小值、平均值
在ONCACULATEFIELD中写入以下代码,
with dataset do
begin
//最大
fieldbyname('maxvalue').asfloat:=fields[0].asfloat;
//最小
fieldbyname('minvalue').asfloat:=fields[0].asfloat;
//平均
fieldbyname('avervalue').asfloat:=0;
for i:=1 to fieldcount-1 do
begin
if fields[i].asfloat>fieldbyname('maxvalue').asfloat then
fieldbyname('maxvalue').asfloat:=fields[i].asfloat;
if fields[i].asfloat<fieldbyname('minvalue').asfloat then
fieldbyname('minvalue').asfloat:=fields[i].asfloat;
fieldbyname('avervalue').asfloat:=fields[i].asfloat+fieldbyname ('avervalue').asfloat;
end;
if fieldbyname('avervalue').asfloat>0 then
fieldbyname('avervalue').asfloat:=fieldbyname('avervalue').asfloat/fieldcount;
end;