2012-08-13 5 views
0

데이터를 unpivoting 한 후 삽입하고 싶습니다. 명령문은 병합 statemenet이어야합니다. 그러나 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 | 
------------------------------------------------------------------------------------- 

그래서 먼저 데이터를 입력하기 전에, 나는 그것을 피벗 해제해야합니다.

---------------------------------- 
|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 

어떻게 작동합니까? 사전에 건배 :-)

답변

0

afaik, MERGE 문에는 ON 절과 대상 테이블에 지정된 UNIQUE 또는 PRIMARY KEY 열이 필요합니다. 데이터 샘플을 보면 원본 테이블에이 샘플이 누락되었을 가능성이 높습니다.

관련 문제