2011-07-21 68 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 
     ) 
相关问题