具体是这样:
    有两个Oracle表A,B,A的字段为(a1,a2),B的字段为(b1,b2);
还有函数f1,f2,f3,预先设定DBGrid有两列
A:  a1  a2  a3   B:  b1  b2
    2   40  12       2   3
    3   56  20       4   5
    6   70  40       6   7
    我想把A表中a1和B表中b1相同的纪录选出来,在选出的结果中作以下处理:a2字段用f1函数处理,a3字段用f2函数处理,b2字段用f3函数处理,然后将处理后的a2字段和处理后的a3字段作乘积,并将结果在DBGrid的第一列显示出来;将处理后的a2字段和处理后的b2字段作相加,并将结果在DBGrid的第二列显示出来。请教高手指点,如何实现?用Query怎样实现呢?

解决方案 »

  1.   

    只要用一个SQL语句能实现的功能, 应该都可以的, SQL语句我不是很熟悉, 帮不了你
      

  2.   

    可以直接使用sql处理后,载入dbgrid:
    sql实现方式:select a.a1,b.b1,f1(a.a2) a2,f2(a.a3) a3,f3(b.b2) b2,f1(a.a2)*f2(a.a3) a2a3,f1(a.a2)*f3(b.b2) a2b2 from a inner join b on b.field=a.field
      

  3.   

    运行以后出错说:f1,f2,f3是无效标识符,怎么解决?
      

  4.   

    谁能解决?用一个循环可以对查询得出的数据作函数处理,我想知道在SQL语句中也能调用函数么?
    如有Query1和函数f1,执行以下操作:
        Query1.close;
        Query1.SQL.add('select a1 from A');
        Query1.open;
        with Query1 do begin
          while not Query1.Eof do
          begin
          edit;
          Query1.FieldByName('a1').Value:=f1(Query1.FieldByName('a1').Value);
          Query1.Next;
          end;
     这样就用f1函数对a1字段数据作了处理,但我想知道能否在Query的SQL语句里就实现这一函数功能呢?
      

  5.   

    SQL 语句可不可以这样,
    select f1(a2)*f2(a3),f1(a2)*f3(b2) from a,b where a1=b1
    delphi中的实现不知道
      

  6.   

    select f1(a.a2)*f2(a.a3)AS field1,
    f1(a2)*f3(b2)AS field2 
    from a,b  where a.a1=b.b1f1,f2,f3必需是返回数值型的函数运行以后出错说:f1,f2,f3是无效标识符,怎么解决?
    说明f1,f2,f3写法不正确或这些函数不存在
      

  7.   

    f1,f2,f3是数库中的函数,不能是在delphi中写的函数