with Form1.ADOQuery1 do 
begin 
Close; 
SQL.Clear; 
SQL.Add('Select staff,sum(amount) from pay where staff=1004 group by staff'); 
Open; 
end; 运行没有错误  但是: 
with Form1.ADOQuery1 do 
begin 
Close; 
SQL.Clear; 
SQL.Add('Select staff,sum(amount) from pay where staff=:postst group by staff'); 
Parameters.ParamByName('Postst').Value:=1004; 
Open; 
end; 
就会报错ora00979:not a group by expression,把group by 去掉就报ora00937 :not a single-group group function. 
请问这是什么原因?谢谢!

解决方案 »

  1.   

    sql.add(Format('Select ..where staff=%d... ',[值参数]));
    这样试试看,确实看不出你的有什么问题,
      

  2.   

    GROUP BY 和 WHERE 子句
    可以在包含 GROUP BY 子句的查询中使用 WHERE 子句。在进行任何分组之前,将消除不符合 WHERE 子句条件的行。例如:USE pubs
    SELECT type, AVG(price)
    FROM titles
    WHERE advance > $5000
    GROUP BY type下面是结果集:type                                    
    ------------ -------------------------- 
    business     2.99                       
    mod_cook     2.99                       
    popular_comp 21.48                      
    psychology   14.30                      
    trad_cook    17.97                      (5 row(s) affected)只有预付款超过 $5,000 的行才包含在查询结果所显示的组中。