有这么一句group by 语句
sql.Add('select sortno as 大类代码,sortname as 大类名称,clientno as 客户代码,clientname as 客户名称,sum(quantity2) as 销售小数量,sum(salessum) as 销售金额,sum(tax) as 销售税金 from '+vw1+' group by sortno,sortname,clientno,clientname');
期中变量vw1是一个表名,在delphi中运行该语句后,总是报“不是group by 表达式”,而如果我不用变量表名的话,就可以正常运行,请问这是什么原因

解决方案 »

  1.   

    sql.Add('select sortno as 大类代码,sortname as 大类名称,clientno as 客户代码,clientname as 客户名称,sum(quantity2) as 销售小数量,sum(salessum) as 销售金额,sum(tax) as 销售税金 from '+''''+vw1+''''+' group by sortno,sortname,clientno,clientname');
      

  2.   

    gechaosa:返回的结果是“表名无效”
      

  3.   

    marf_cn:请文[]改写在什么地方?
      

  4.   

    跟踪一下代码,把运行时SQL.Text的内容贴出来,三个引号的用发再这里不适用(只适用于字符串,整型的也不要用),[]一般在表名与SQL系统保留字重复时用。
      

  5.   

    sql.Add('select sortno as 大类代码,sortname as 大类名称,clientno as 客户代码,clientname as 客户名称,sum(quantity2) as 销售小数量,sum(salessum) as 销售金额,sum(tax) as 销售税金 from '+vw1
    +' group by 大类代码,大类名称,客户代码,客户名称');
                ^^^上面用了as,此处就得用as后的字段
      

  6.   

    select fieldname1 as fname1,fieldname2 as fname2,count(*) group by fieldname1,fieldname2 having count(*)>1上面的语句里面,group by 必须fieldname1,fieldname2,只是分组函数的要求,前面的count(*)可要可不要,但是前面的字段有多少,后面group by 就必须有多少。having是分组条件过滤函数,可不要,只队group by 分组后的起过滤作用
      

  7.   

    应该不是as的问题,还是跟踪一下代码,把运行时SQL.Text的内容贴出来。