100分!当天就结帐!!query能通过的sql语句,而adoquery却不能通过,请各位前辈帮忙!
语句如下:
SELECT a.col2, SUM(b.col2 ), 0 jsy, 0 jse, SUM( b.col3+b.col4+b.col5), SUM( b.col6 ), 0 jss
FROM a,b
WHERE (b.col1=a.col1)
AND ( (b.col7 >= to_date(:st_start, 'yyyy-mm-dd'))
AND (b.col7 < to_date(:st_end, 'yyyy-mm-dd') ) )
GROUP BY a.col2在adoquery下提示错误信息:
ora-00979:not a order by expression
语句如下:
SELECT a.col2, SUM(b.col2 ), 0 jsy, 0 jse, SUM( b.col3+b.col4+b.col5), SUM( b.col6 ), 0 jss
FROM a,b
WHERE (b.col1=a.col1)
AND ( (b.col7 >= to_date(:st_start, 'yyyy-mm-dd'))
AND (b.col7 < to_date(:st_end, 'yyyy-mm-dd') ) )
GROUP BY a.col2在adoquery下提示错误信息:
ora-00979:not a order by expression
解决方案 »
- Delphi 中用query.SQL.add() insert當前時間進Oracle怎麼寫
- 如果释放所有treeview节点的所有子节点DATA,并删除所有子节点?
- 问一个简单的.
- 打开看看吧
- ExpressDBTree 1.31
- 根据这个表的字段,怎样查询2003-10-2 9:00:00 到2003-10-3 7:30:00的记录呢?
- 急急急!!!!DevExpress的dxMaskEdit和cxMaskEdit到底有什么不一样,那里有dxMaskEdit
- 如何实现事务管理?
- 请教高手:关于控件Dock操作的问题
- 我用ONNEEDDATA怎么总是不起作用呀?在线等待!
- 三层数据库系统中,在客户端怎样添加记录?
- 两台电脑,一用猫上网,一用宽带。如何通过我的程序使他们互相获取对方的IP地址?
产生这个错误的原因,是因为在GROUP BY 子句中没有全部包含SELECT子句中的所有内容 ,SELECT表达式中除AVG, COUNT, MAX, MIN, SUM, STDDEV 和 VARIANCE函数等之外的其他所有字段必须全部包含在GROUP BY 子句中.
是你在胡说还是我晕了?
为什么我把语句里的两个变量换成常量,如改成
...
WHERE (b.col1=a.col1)
AND ( (b.col7 >= to_date('2003-05-01', 'yyyy-mm-dd'))
AND (b.col7 < to_date('2003-06-01', 'yyyy-mm-dd') ) )
GROUP BY a.col2
就可以通过,道理一样的,无非是加了参数吗,为什么??!!在query里却可以加参数通过.to tonycjl(陈欣) :
我将0 jsy,0 jse,0 jss去掉也是一样请大家继续帮忙,解决了后再另开一贴送100分
谢谢idilent(说错了别怪我),给我提供了解决问题的思路。
我监视了一下运行时产生的sql语句,原来delphi优化产生的sql语句比我的多了两列:
select .... a.rowid,ab.rowid
..........
将aqoquery的locktype属性由ltoptimistic改成ltreadonly就行了可我不明白这locktype属性的具体意思(我是猜着改这个属性的),哪位高人给小弟
解释一下。可我不明白这locktype属性的具体意思(我是猜着改这个属性的),哪位高人给小弟
解释一下。
谢谢各位捧场,下午下班前结帐
大哥,我看不懂啊,能详细介绍一下locktype的意思吗?
我是觉得如果将locktype设为ltoptimistic好象是delphi还要对
adoquery里的sql语句优化或者什么的,反正当时是这样猜的,
请各位大哥发表高见!!下午5点种准时结帐
ltUnspecified A specific lock type has not been specified or determined.
ltReadOnly Read-only; the current execution cannot modify data.
ltPessimistic Pessimistic locks; locks instantiated on a record-by-record basis when edit mode is applied to a record.
ltOptimistic Optimistic locks; locked are initiated on a record-by-record basis, but only when updates are applied and a record is being updated.
ltBatchOptimistic Optimistic batch updates; used for batch update mode rather than immediate update mode.
不过我觉得不是这个的问题,你的参数是怎么赋值的?
GZ
可我把locktype改成ltOptimistic后还是出错,
我监视了一下运行时产生的sql语句,原来delphi优化产生的sql语句比我的多了两列:
select .... a.rowid,b.rowid
..........
这rowid是oracle里的伪列吧,不知道delphi是怎么生成这么一条语句。现在结帐吧,谢谢各位帮忙,尤其是idilent(说错了别怪我) and RobinHZ(熊掌)
大家有搞明白这个问题希望能告诉小弟一声。