我想使用sql语句来查询一条记录中的各个字段中的最大值、最小值以及除去0值以外的所有数值的平均值(在这条记录中,除了有数值的字段外,还有文本的字段)。
  我知道,sql语句可以使用min、max、count等函数来计算相关值,但它是对一个表中的纵向的多条记录进行计算,而我的这个要求是按照表中一条记录即横向的来进行计算。
  我是一个初学者,问题可能有点简单,请大家不要笑话我。

解决方案 »

  1.   

    你的意思是对同一条记录中的各列求最大值、最小值、平均值。
    这在SQL语句中还没法实现,你可以把记录读出来后,自己在程序中进行处理。
      

  2.   

    你可以增加几个计算字段(maxvalue,
    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;
      

  3.   

    我不知道怎么写1条sql就能实现你所说的问题,如果想一次调用实现的话不如写一个存储过程吧。