Отсутствует правая скобка ora-00907

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 месяца месяц за месяцем любые предложения, пожалуйста.

3 ответа

  1. Вам нужно пространство между словами GROUP а также BY в вашем GROUP BY пункт и слова ORDER а также BY в вашем ORDER BY пункт.

  2. Хотя это не приведет к синтаксической ошибке, вы почти наверняка не захотите использовать одинарные кавычки рядом с BETWEEN, Я настоятельно рекомендую вам также не полагаться на неявные преобразования, поскольку кто-то с другими настройками NLS может захотеть запустить этот код.

    WHERE move_dtm BETWEEN to_date( '01-FEB-2012', 'DD-MON-YYYY' ) 
                   AND to_date( '29-FEB-2012', 'DD-MON-YYYY' )
    

    или же

    WHERE move_dtm BETWEEN date '2012-02-01' AND date '2012-02-29'
    

Есть две причины для исключения ORA-00907.

Во-первых, банально, есть левый парантез - ( - без партнерских правых скобок - ), Их может быть трудно диагностировать вручную, особенно в большом операторе SQL, но достаточно просто, если у вас есть приличная IDE с функцией сопоставления скобок.

Вторая причина - синтаксическая ошибка в операторе SQL, который содержит скобки. Если мы неправильно введем ключевое слово, Oracle будет рассматривать его как имя объекта. Это может привести к возникновению ряда ошибок, таких как ORA-00905, ORA-00936 и многих других в диапазоне от 00900 до 01499. ORA-00907 является одним из тех. Опять же, приличная IDE поможет здесь: подсветка синтаксиса может помочь нам идентифицировать опечатки, если не выделить ключевые слова, которые мы опечатали.

В вашем конкретном случае кажется вероятным, что ваше сжатие GROUP BY в одно слово, вероятно, виновником. Вам также нужно будет исправить ORDER BY,

Проблема вроде неуместна цитата BETWEEN'

BETWEEN' 01-FEB-12' AND '29-FEB-12'
Другие вопросы по тегам