具体是这样:
有两个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怎样实现呢?
有两个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怎样实现呢?
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
如有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语句里就实现这一函数功能呢?
select f1(a2)*f2(a3),f1(a2)*f3(b2) from a,b where a1=b1
delphi中的实现不知道
f1(a2)*f3(b2)AS field2
from a,b where a.a1=b.b1f1,f2,f3必需是返回数值型的函数运行以后出错说:f1,f2,f3是无效标识符,怎么解决?
说明f1,f2,f3写法不正确或这些函数不存在