2011-07-21 127 views
0
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有在線路14上的誤差作爲SQL命令不正確地結束

  FROM wh_voucher_groups_dim vg) ahm 
             * 

ERROR: ORA-00933:SQL命令未正確結束

u能請指導那裏是一個錯誤,請還引導改變


+1

這是整個查詢或只是一個部分?似乎缺少某些東西。你使用'whm',但你沒有'whm'別名,左括號丟失(某處!),你有'ON'沒有任何'JOIN'等等。我想這是一個你試圖改變的工作查詢,刪除了一些部分。 –

回答

2

你缺少了這一行業的JOIN condidition:

FROM wh_voucher_groups_dim vg) ahm 
    JOIN ??????? 
    ON (whm.voucher_group_id .... 
2

編輯:基於下面的評論... 你可能在找這個..?你需要在括號中包含完整的內部查詢,給它一個別名,然後將它加入到另一個表中。沒有必要使用「USING」。

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 

FROM wh_voucher_groups_dim VG)AHM ON(whm.voucher_group_id = ahm.voucher_group_id和

如果有另一個表別名南國這裏?

+0

這條線路是在使用(SELECT/* + PARALLEL(AAE,4)*/DISTINCT NVL(aae.voucher_group_id,-1)voucher_group_id, * ERROR位於第2行的第一選擇*從wh_voucher_groups_dim WHM : ORA-00933 :SQL命令未正確結束 – Suresh

+0

您的語法不正確。請參閱我上面的更新查詢... –

1

爲了使用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

此行最初選擇* from wh_voucher_groups_dim whm using(SELECT/* + PARALLEL(aae,4)*/DISTINCT nvl(aae .voucher_group_id,-1)voucher_group_id, * 錯誤在第2行: ORA-00933:SQL命令未正確結束 – Suresh

0

我的猜測是,這是從一個更大的查詢的一部分,並以某種方式去除部分開始:

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 
     ) 
相關問題