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),这是为什么??

解决方案 »

  1.   

    这里面的sum是一个内置函数,在SQL语句被执行的过程当中它被执行,而由于它不是一个规范的字段名称,所以执行后的结果将会先检查用户为其定义的别名,如果未定义则由系统自动为其赋予一个别名,从而这个别名将不再是sum(a.fee),除非如此写法:
    select sum(a.free) as [sum(a.fee)] from somewhere
    这样子as后面带的便是指定的别名,而由于sum(x)是一个非规范的列名,所以需要使用[]来标识其为一个完整的名称,而非SQL语句来执行.