Команда SQL неправильно завершена - PullRequest
0 голосов
/ 21 июля 2011
SELECT /*+ PARALLEL(aae,4) */ DISTINCT nvl(aae.voucher_group_id,-1)  voucher_group_id,
                           aae.nominal_transaction_amount unit_price,
                           aae.original_currency_type currency_type,
                           aae.segmentation_id
             FROM air_account_events aae
            WHERE aae.time_hour_id >= m_start_thid
              AND aae.time_hour_id < m_end_thid
              AND aae.nominal_transaction_amount is not null 
           MINUS
           SELECT vg.voucher_group_id,
                  vg.unit_price,
                  vg.currency_type,
                  vg.segmentation_id
             FROM wh_voucher_groups_dim vg) ahm
    ON (whm.voucher_group_id = ahm.voucher_group_id AND whm.unit_price = ahm.unit_price 
    AND whm.currency_type = ahm.currency_type AND whm.segmentation_id=ahm.segmentation_id) ahm

Когда я запускаю следующий PL / SQL, возникает ошибка как

         FROM wh_voucher_groups_dim vg) ahm
                                      *

ОШИБКА в строке 14: ORA-00933: команда SQL неправильно завершена

Можете ли вы использовать руководство, где есть ошибка, и, пожалуйста, руководство для изменения


Ответы [ 4 ]

2 голосов
/ 21 июля 2011

РЕДАКТИРОВАТЬ: на основе вашего комментария ниже ... Вы, наверное, ищете это ..? Вам нужно включить полный внутренний запрос в фигурные скобки, дать ему псевдоним и затем присоединить его к другой таблице. Нет необходимости использовать «ИСПОЛЬЗОВАНИЕ».

select * from wh_voucher_groups_dim whm,
( SELECT /*+ PARALLEL(aae,4) */ 
         DISTINCT nvl(aae.voucher_group_id,-1)  voucher_group_id,
                           aae.nominal_transaction_amount unit_price,
                           aae.original_currency_type currency_type,
                           aae.segmentation_id
             FROM air_account_events aae
            WHERE aae.time_hour_id >= m_start_thid
              AND aae.time_hour_id < m_end_thid
              AND aae.nominal_transaction_amount is not null 
           MINUS
           SELECT vg.voucher_group_id,
                  vg.unit_price,
                  vg.currency_type,
                  vg.segmentation_id
             FROM wh_voucher_groups_dim vg
 ) ahm
    WHERE  (whm.voucher_group_id = ahm.voucher_group_id AND 
            whm.unit_price = ahm.unit_price AND
            whm.currency_type = ahm.currency_type AND 
            whm.segmentation_id=ahm.segmentation_id)

Возможно, ранее у вас был синтаксис объединения ANSI, и вы удалили эту часть во втором запросе?

SELECT vg.voucher_group_id,
                  vg.unit_price,
                  vg.currency_type,
                  vg.segmentation_id
             FROM wh_voucher_groups_dim vg) ahm
    ON (whm.voucher_group_id = ahm.voucher_group_id AND 
        whm.unit_price = ahm.unit_price AND
        whm.currency_type = ahm.currency_type AND  
        whm.segmentation_id=ahm.segmentation_id) ahm

ОТ wh_voucher_groups_dim vg) ааа ON (whm.voucher_group_id = ahm.voucher_group_id AND

Должен ли здесь быть еще один псевдоним таблицы?

2 голосов
/ 21 июля 2011

Вы пропустили условие JOIN в этой строке:

FROM wh_voucher_groups_dim vg) ahm
   JOIN ???????
   ON (whm.voucher_group_id ....
1 голос
/ 21 июля 2011

Чтобы использовать ключевое слово ON, перед ним необходимо объединение. Я добавил ключевое слово JOIN ниже. Вам нужно решить для себя, должно ли это быть стандартное соединение, внешнее, внутреннее и т. Д.

             FROM wh_voucher_groups_dim vg) ahm JOIN <table>
    ON (whm.voucher_group_id = ahm.voucher_group_id AND whm.unit_price = ahm.unit_price 
    AND whm.currency_type = ahm.currency_type AND whm.segmentation_id=ahm.segmentation_id) ahm 
0 голосов
/ 21 июля 2011

Я предполагаю, что это часть большого запроса, и как-то удалена начальная часть:

SELECT ...                  --- missing part
FROM ...                    --- missing part
    sometable whm           --- missing part
        SOME JOIN           --- missing part
    (                       --- missing part

      SELECT /*+ PARALLEL(aae,4) */ DISTINCT ...
      ...
      FROM wh_voucher_groups_dim vg
    ) ahm
      ON ( whm.voucher_group_id = ahm.voucher_group_id 
       AND whm.unit_price = ahm.unit_price 
       AND whm.currency_type = ahm.currency_type 
       AND whm.segmentation_id=ahm.segmentation_id
         )
...