帮帮我,为什么这样不行???
datamodule3.Query5.SQL.Clear;
datamodule3.Query5.SQL.Add('select sum(a.fee) from');
datamodule3.Query5.SQL.Add('(select user_id,sum(fee1+fee2+fee3+fee4+fee11+fee12+fee13+fee14) fee');
datamodule3.Query5.SQL.Add('from hbbf_all_bill_t@hbcity_link');
datamodule3.Query5.SQL.Add('where service_kind=9');
datamodule3.Query5.SQL.Add('and fee_date='''+frm_jyjxsjgl.Edit1.Text+'''');
datamodule3.Query5.SQL.Add('and fee_kind not in (198,199)');
datamodule3.Query5.SQL.Add('group by user_id) a,');
datamodule3.Query5.SQL.Add('(select user_id,source_id from hbbb_service_relation_t@hbcity_link');
datamodule3.Query5.SQL.Add('where service_kind=9) b,');
datamodule3.Query5.SQL.Add('(select yytdm from yytxx_da where ssbm like ''仙桃%'') c,');
datamodule3.Query5.SQL.Add('where a.user_id=b.user_id and b.source_id=c.yytdm');
yxzx_sr_g:=datamodule3.Query5.fieldbyname('sum(a.fee)').AsString;
结果是query5没有sum(a.fee),这是为什么??
问题点数:20、回复次数:2Top
1 楼unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复))回复于 2006-03-01 23:40:51 得分 0
这里面的sum是一个内置函数,在SQL语句被执行的过程当中它被执行,而由于它不是一个规范的字段名称,所以执行后的结果将会先检查用户为其定义的别名,如果未定义则由系统自动为其赋予一个别名,从而这个别名将不再是sum(a.fee),除非如此写法:
select sum(a.free) as [sum(a.fee)] from somewhere
这样子as后面带的便是指定的别名,而由于sum(x)是一个非规范的列名,所以需要使用[]来标识其为一个完整的名称,而非SQL语句来执行.Top
2 楼SharpCoder(SharpCoder)回复于 2006-03-02 08:06:40 得分 0
谢谢你,(僵哥(送人以鱼,不如授人渔;授人以渔,不如渔人之鱼))Top




