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

解决方案 »

  1.   

    0 jsy 要加 as吧!  0 as jsy
      

  2.   

    請問你的語句中:to_date是什么東西啊﹐sql里沒有這個語法吧
      

  3.   

    俺 没见过TO-DATE这东东,请教一个是什么东东?
      

  4.   

    ORA-00979: not a GROUP BY expression 
    产生这个错误的原因,是因为在GROUP BY 子句中没有全部包含SELECT子句中的所有内容 ,SELECT表达式中除AVG, COUNT, MAX, MIN, SUM, STDDEV 和 VARIANCE函数等之外的其他所有字段必须全部包含在GROUP BY 子句中.
      

  5.   

    你这语句能在query下通过?搞笑吧?
    是你在胡说还是我晕了?
      

  6.   

    to_date是oracle里面的转换字符串为日期的函数,在query下确实能通过,返回的结果也对
      

  7.   

    樓上的兄弟﹐別人的語句(除了不知道to_date是什么東東)其它的都是對的﹐沒什么問題。
      

  8.   

    0 jsy, 0 jse,0 jss, 去掉或者GROUP 上,你会有好发现的。
      

  9.   

    myling(阿德),确实是你晕了,哈哈哈
      

  10.   

    是不是:st_start,:st_end有问题,其他我在AdoQuery上可以通过?
      

  11.   

    query是bde执行,adoquery是后台数据库执行,你如果用access数据库就会有问题。
      

  12.   

    我都晕死了!!!
    为什么我把语句里的两个变量换成常量,如改成
    ...
    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分
      

  13.   

    运行时把sql拷出来看看是什么东东。
      

  14.   

    呵呵,解决了
    谢谢idilent(说错了别怪我),给我提供了解决问题的思路。
    我监视了一下运行时产生的sql语句,原来delphi优化产生的sql语句比我的多了两列:
    select ....     a.rowid,ab.rowid
    ..........
    将aqoquery的locktype属性由ltoptimistic改成ltreadonly就行了可我不明白这locktype属性的具体意思(我是猜着改这个属性的),哪位高人给小弟
    解释一下。可我不明白这locktype属性的具体意思(我是猜着改这个属性的),哪位高人给小弟
    解释一下。
    谢谢各位捧场,下午下班前结帐
      

  15.   

    拷贝帮助Specifies the lock type to use when opening a dataset.Delphi syntax:property LockType: TADOLockType;C++ syntax:__property TADOLockType LockType = {read=GetLockType, write=SetLockType, default=3};DescriptionUse LockType to specify the lock type to use when opening a dataset. LockType determines whether the row locking scheme for a recordset will be pessimistic, optimistic, or read-only. To be effective, LockType must be set prior to activating the ADO dataset component.The default value of LockType is ltOptimistic.Use the LockType ltBatchOptimistic to open a dataset in batch update mode.
      

  16.   

    to  hotzhu(非洲白脸):
    大哥,我看不懂啊,能详细介绍一下locktype的意思吗?
    我是觉得如果将locktype设为ltoptimistic好象是delphi还要对
    adoquery里的sql语句优化或者什么的,反正当时是这样猜的,
    请各位大哥发表高见!!下午5点种准时结帐
      

  17.   

    LockType,锁定方式,具体我也说不好,给你这个瞧瞧:
    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.
    不过我觉得不是这个的问题,你的参数是怎么赋值的?
      

  18.   

    SQL语句与LOCK有关系的吗?
    GZ
      

  19.   

    听RobinHZ(熊掌) 这么一解释,我也觉得不象这儿的问题了,
    可我把locktype改成ltOptimistic后还是出错,
    我监视了一下运行时产生的sql语句,原来delphi优化产生的sql语句比我的多了两列:
    select ....     a.rowid,b.rowid
    ..........
    这rowid是oracle里的伪列吧,不知道delphi是怎么生成这么一条语句。现在结帐吧,谢谢各位帮忙,尤其是idilent(说错了别怪我)  and   RobinHZ(熊掌) 
    大家有搞明白这个问题希望能告诉小弟一声。