2012-08-13 339 views
0

我想在取消數據後插入數據。該聲明需要成爲合併狀態網。但是,我得到了ora-30926錯誤,我無法弄清楚如何解決它。ORA-30926:無法在源表中獲得穩定的一組行

這裏的數據表:

------------------------------------------------------------------------------------ 
|Employee_id | work_experience_1 | work_experience_2 | work_experience_3 | language | 
------------------------------------------------------------------------------------- 
| 123  | C&S    | Deloitte  |   TCS  |  FI | 
| 211  | E&Y    | Microsoft  |     |  FI | 
| 213  | C&S    |     |     |  FI | 
------------------------------------------------------------------------------------- 

所以先輸入數據之前,我需要UNPIVOT它。

---------------------------------- 
|Employee_id | work_experience | 
---------------------------------- 
| 123  | C&S    | 
| 123  | Deloitte  | 
| 123  |  TCS   | 
| 211  | E&Y    | 
| 211  | Microsoft  | 
| 213  | C&S    | 
---------------------------------- 

這是我所做的。插入部分工作正常,但更新部分失敗。

MERGE INTO arc_hrcs.user_multi_work_exp work_exp 
USING (SELECT user_id, work_experience_lang, work_exp_fi FROM 
     (SELECT ext.user_id, tmp_work.employee_id, tmp_work.work_experience_1, tmp_work.work_experience_2, tmp_work.work_experience_3, tmp_work.work_experience_4, tmp_work.work_experience_5, tmp_work.work_experience_6, tmp_work.work_experience_7, tmp_work.work_experience_8, tmp_work.work_experience_9, tmp_work.work_experience_10, tmp_work.work_experience_lang FROM arc_hrcs.hr_extension_data ext 
      JOIN aa_work_exp_tmp tmp_work ON tmp_work.employee_id = ext.employee_id) 
      UNPIVOT (work_exp_fi FOR work_code IN (work_experience_1 AS 'a', work_experience_2 AS 'b', work_experience_3 AS 'c', work_experience_4 AS 'd', work_experience_5 AS 'e', work_experience_6 AS 'f', work_experience_7 AS 'g', work_experience_8 AS 'h', work_experience_9 AS 'i', work_experience_10 AS 'j'))) r 
ON (work_exp.user_id = r.user_id AND r.work_experience_lang LIKE '%FI%') 
WHEN NOT MATCHED THEN 
    INSERT (work_exp.user_id, work_exp.work_experience_fi) 
    VALUES (r.user_id, r.work_exp_fi) 
WHEN MATCHED THEN 
    UPDATE SET work_exp.work_experience_fi = r.work_exp_fi 

我該怎麼做才能使它工作? 歡呼聲和thx提前:-)

回答

0

afaik,MERGE語句需要ON子句和目標表中指定的UNIQUE或PRIMARY KEY列。看看你的數據樣本,你可能在源表中錯過了它們。