首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >右括号缺少ora-00907

右括号缺少ora-00907
EN

Stack Overflow用户
提问于 2012-06-09 12:56:35
回答 3查看 2.9K关注 0票数 0
代码语言:javascript
复制
SELECT * FROM (
    SELECT
    ORG_ROADMARK,
    COUNT(DISTINCT EQUIP_INITIAL||EQUIP_NUM||move_dtm) AS Billing_Count
    FROM CMD_BILLING_INFO
    WHERE move_dtm BETWEEN' 01-FEB-12' AND '29-FEB-12'
    AND (
        (MOVE_TYPE_CD ='ICR' AND EQUIP_STATUS_CD IN ('L','W'))
        OR
        ( MOVE_TYPE_CD ='RLO' AND EQUIP_STATUS_CD ='L' )
        OR
        ( MOVE_TYPE_CD ='RMT' AND EQUIP_STATUS_CD ='W' )
    ) GROUPBY ORG_ROADMARK
) ORDERBY ORG_ROADMARK

对于上面的sql,我遇到了缺少右括号的错误。使用这个sql,我能够得到一个月期间的结果,并试图修改它,以获得过去24个月的结果逐月,任何建议,请。

EN

回答 3

Stack Overflow用户

发布于 2012-06-09 13:13:46

在你的

  • 子句中,单词GROUPBY之间需要一个空格,在你的ORDER BY子句中,单词ORDERBY之间需要一个空格。这不会导致语法错误,你几乎可以肯定的是,不要把单引号放在BETWEEN旁边。我强烈建议您也不要依赖隐式转换,因为具有不同NLS设置的人可能想要运行此代码。

其中move_dtm介于to_date( '01-FEB-2012','DD-MON-YYYY‘)和to_date( '29-FEB-2012','DD-MON-YYYY’)之间

日期'2012-02-01‘和日期'2012-02-29'之间的move_dtm

票数 4
EN

Stack Overflow用户

发布于 2012-06-09 23:52:30

ORA-00907异常有两个原因。

首先,平淡无奇地,有一个左括号- ( -没有配对的右括号- )。手工诊断这些问题可能很困难,尤其是在大型SQL语句中,但是如果您有一个像样的IDE,并且有一个括号匹配函数,那么就足够容易了。

第二个原因是包含方括号的SQL语句中的语法错误。如果我们输入了错误的关键字,Oracle会将其视为对象名称。这会导致它抛出许多错误,比如the 00900 to 01499 range中的ORA-00905、ORA-00936和许多其他错误。ORA-00907就是其中之一。同样,一个像样的IDE在这里会有所帮助:语法突出显示可以帮助我们识别拼写错误,因为它不会突出显示我们拼写错误的关键字。

在您的特定情况下,您将GROUP BY压缩为一个单词可能是罪魁祸首。您还需要修复ORDER BY

票数 2
EN

Stack Overflow用户

发布于 2012-06-09 13:09:16

问题似乎出在引用BETWEEN'的地方

代码语言:javascript
复制
BETWEEN' 01-FEB-12' AND '29-FEB-12'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10958478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档