adoquery传参数group by时报错 ORA: 00979 不是group by表达式,该如何解决
adoquery传参数group by时报错 ORA: 00979 不是group by表达式
我服务器端adoquery的SQL语句是(查出某一订单号里每种物料的需采购的数量) :
select pm.Material_Id, sum(pm.Fact_Count * op.Pattern_Count) MatMount
from CPatternMaterial pm, COorderPattern op
where op.Pattern_Id = pm.Pattern_Id
and pm.Stock_Id = :psid(psid 为客户端传来的参数)
group by pm.Material_Id
(这句SQL 我在developer下赋值给psid是能够查出数据的)
但是却报错:“ORA: 00979 不是group by表达式”
------解决方案--------------------
把你的sql语句直接放到数据库中测试一下,看能执行吗
然后看你BCB中最后的sqlstring是不是对的
------解决方案--------------------
select distinct pm.Material_Id, sum(pm.Fact_Count * op.Pattern_Count) MatMount
from CPatternMaterial pm, COorderPattern op
where op.Pattern_Id = pm.Pattern_Id
and pm.Stock_Id = :psid
group by pm.Material_Id
------解决方案--------------------
ADOQuery支持带group by表达式的SQL 语句
lz 你检查一下你带入 ADOQuery 的语句是不是对的
//AnsiString SQL ="..."
ADOQuery->SQL->Clear();
ShowMessage(SQL); //看看是不是对的? 或者把这里的SQL 放到developer 去试试就知道了
ADOQuery->SQL->Add(SQL);
贴出具体代码看看
我服务器端adoquery的SQL语句是(查出某一订单号里每种物料的需采购的数量) :
select pm.Material_Id, sum(pm.Fact_Count * op.Pattern_Count) MatMount
from CPatternMaterial pm, COorderPattern op
where op.Pattern_Id = pm.Pattern_Id
and pm.Stock_Id = :psid(psid 为客户端传来的参数)
group by pm.Material_Id
(这句SQL 我在developer下赋值给psid是能够查出数据的)
但是却报错:“ORA: 00979 不是group by表达式”
------解决方案--------------------
把你的sql语句直接放到数据库中测试一下,看能执行吗
然后看你BCB中最后的sqlstring是不是对的
------解决方案--------------------
select distinct pm.Material_Id, sum(pm.Fact_Count * op.Pattern_Count) MatMount
from CPatternMaterial pm, COorderPattern op
where op.Pattern_Id = pm.Pattern_Id
and pm.Stock_Id = :psid
group by pm.Material_Id
------解决方案--------------------
ADOQuery支持带group by表达式的SQL 语句
lz 你检查一下你带入 ADOQuery 的语句是不是对的
//AnsiString SQL ="..."
ADOQuery->SQL->Clear();
ShowMessage(SQL); //看看是不是对的? 或者把这里的SQL 放到developer 去试试就知道了
ADOQuery->SQL->Add(SQL);
贴出具体代码看看