2013-01-16 38 views
0

我試圖執行這個查詢得到的DB-可視化一些成果,但我不斷收到以下回應:ORA-00907:缺少右括號2

響應: [錯誤代碼:907, SQL狀態:42000] ORA-00907:缺少右括號

編輯 * 查詢: *

SELECT * FROM (
    SELECT 
    e.*, clt_add_l1, clt_add_l2, clt_city, clt_prst_cd, clt_pszp_cd 
    FROM  Staging.db_&tablename_v._match e, client.clt_address ca, client.clt_add_usg au 
    WHERE substr(match_desc,1,2) = '00' 
    and e.clt_ofc_no=au.clt_ofc_no(+) 
    and e.clt_no=au.clt_no(+) 
    and au.clt_ofc_no=ca.clt_ofc_no(+) 
    and au.clt_add_key=ca.clt_add_key(+) 
    and au.clt_add_type(+)='PRI' 
    UNION ALL 
    SELECT 
    e.*, clt_add_l1, clt_add_l2, clt_city, clt_prst_cd, clt_pszp_cd 
    FROM  Staging.db_&tablename_v._match e, staging.clt_address_cp au 
    WHERE substr(match_desc,1,2) in ('01','02') 
    and e.namadd_no = au.namadd_no(+) 
) foo ORDER BY match_desc, seq_no; 

回答

0

問題是& tablename_v。需要刪除,表格名稱(即DATES)應該插入到位。我試過了,它工作。

但是感謝大家的幫助!它是極大的讚賞:)

0

二者必選其一:

substr(match_desc,1,2) in ('00') 

substr(match_desc,1,2) = '00' 
+0

予除去()和將其改爲SUBSTR(match_desc,1,2)= '00'。但我仍然得到同樣的錯誤 – Ish

1

用途:

SELECT e.*, clt_add_l1, clt_add_l2, clt_city, clt_prst_cd, clt_pszp_cd, match_desc, seq_no 
    FROM Staging.db_&tablename_v._match e 
LEFT JOIN client.clt_add_usg au ON au.clt_ofc_no = e.clt_ofc_no 
           AND au.clt_no = e.clt_no 
           AND au.clt_add_type = 'PRI' 
LEFT JOIN client.clt_address ca ON ca.clt_ofc_no = au.clt_ofc_no 
           AND ca.clt_add_key = au.clt_add_key 
    WHERE substr(match_desc,1,2) = '00' 
    UNION ALL 
    SELECT e.*, clt_add_l1, clt_add_l2, clt_city, clt_prst_cd, clt_pszp_cd, match_desc, seq_no 
    FROM Staging.db_&tablename_v._match e 
LEFT JOIN staging.clt_address_cp au ON au.namadd_no = e.namadd_no 
    WHERE substr(match_desc,1,2) IN ('01','02') 
ORDER BY match_desc, seq_no 

沒有必要派生表/內嵌視圖。但是不清楚按列排序的列是否已經在查詢中(IE:e。*),所以我明確地將它們添加到了最後。

我重新寫查詢中使用ANSI-92連接語法 - 您的查詢使用一個早已過時的手段外連接。

我沒有你的數據庫&表。您確定問題的最簡單方法是修剪查詢,直到它開始返回數據。然後,逐個添加條件(列,表,WHERE/etc子句)以查看事情發生錯誤的地方。

+0

我收到以下消息時,我用你的問題:「ORA-00933:SQL命令不能正確地結束」 – Ish

0

我猜想,你的GUI不更換

Staging.db_&tablename_v._match 

正常。試試這個:

select 'Staging.db_&tablename_v._match' from dual; 

最新結果是什麼?我不得不猜測其離開餐桌名狀

Staging.db_whatever._match 

而不是預期的

Staging.db_whatever_match 
+0

我得到同樣的錯誤消息的問題描述。 – Ish

+0

@Ish只是運行從雙選? (即不把它放到你的原始sql或任何東西..只是單獨運行。 – DazzaL