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个月的结果逐月,任何建议,请。
发布于 2012-06-09 13:13:46
在你的
GROUP和BY之间需要一个空格,在你的ORDER BY子句中,单词ORDER和BY之间需要一个空格。这不会导致语法错误,你几乎可以肯定的是,不要把单引号放在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
发布于 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。
发布于 2012-06-09 13:09:16
问题似乎出在引用BETWEEN'的地方
BETWEEN' 01-FEB-12' AND '29-FEB-12'https://stackoverflow.com/questions/10958478
复制相似问题