ADOQuery或ADODataSet中的SQL语句的Group by问题!(100分)

  • 主题发起人 主题发起人 三少
  • 开始时间 开始时间

三少

Unregistered / Unconfirmed
GUEST, unregistred user!
有这么一段SQL语句:
select FieldName1,count(*) from table1,table2
where table1.FieldName1=table2.FieldName1 and table1.FieldName2=:test
group by table1.OtherField
其中Test是参数,连接的是Oracle 8.0.5,出现“ORA-00979:不是Group by变量”的提示
如果把test改成常量的话通过连接,但是一样的语句在PB中通过,这是为什么?如何解决?
 
补充:该语句在BDE的Query中通过。
 
test的类型对不对?
 
类型正确ftString。
 
有 group 子句时,各个简单字段(即非统计字段)都应在 group by 子句里。
group by 子句的内容应为:group by fieldname1,
要么写成 select fieldname1,otherfield, ....
...
group by otherfield,fieldname1
 
问题出在参数的赋值方式上,在加上一句ParamByName(test);就可以了
 
group by 中的字段必须都在SELECT 中出现.
 
问题出在参数的赋值方式上,在加上一句ParamByName(test);就可以
select table1.FieldName1,count(*) from table1,table2
where table1.FieldName1=table2.FieldName1 and table1.FieldName2=:test
group by table1.FieldName1
parambyname(test):.......
 
多谢各位大虾!但是小子我到现在还是没有解决问题。
1。改语句如果连接MS SQL Server可以通过,但是Oracle不行。
2。请问parambyname(test)到底加在什么地方?ADOquery.open的前面?
事实我试过还是不行。难道是ADO连接ORACLE的BUG?
 
MSSQLSERVER中不可能通过,因为ANSI_92SQL规定在Select 中出现得字段(非聚集
函数如Count,Avg,Max,Min,Sum...等中出现的)需在Group By 中包含.
Oracle也一样.
 
接受答案了.
 
后退
顶部