2012-04-14 33 views
-1

可能重複:
ORA-30926: unable to get a stable set of rows in the source tablesORA-30926錯誤

我試圖執行以下MERGE語句,但正顯示出我ORA-30926錯誤

merge into test_output target_table 
USING (SELECT c.test_code, 
    c.v_report_id, upper_score, 
     CASE WHEN c.test_code = 1 THEN b.mean_diff 
      WHEN c.test_code = 2 THEN b.norm_dist 
      WHEN c.test_code = 3 THEN b.ks_stats 
      WHEN c.test_code = 4 THEN b.ginni 
      WHEN c.test_code = 5 THEN b.auroc 
      WHEN c.test_code = 6 THEN b.info_stats 
      WHEN c.test_code = 7 THEN b.kl_stats 
        END val1 
    FROM combined_approach b inner join test_output c 
      on b.v_report_id = c.v_report_id 
      and c.upper_score = b.band_code 
      WHERE c.v_report_id = lv_report_id 
         ORDER BY c.test_code) source_table 
         on(target_table.v_report_id = source_table.v_report_id 
         and target_table.v_report_id = lv_report_id) 
       when matched then   
update SET target_table.upper_value = source_table.val1; 
+3

http://stackoverflow.com/questions/2337271/ora-30926-unable-to-get-a-stable-set-of-rows-in-the-source-tables – Mat 2012-04-14 09:51:27

回答

0

我認爲你有這個錯誤,因爲你的使用條款上的行具有相同的v_report_id你能試試這個

merge into test_output target_table 
USING (SELECT 
     CASE WHEN c.test_code = 1 THEN b.mean_diff 
      WHEN c.test_code = 2 THEN b.norm_dist 
      WHEN c.test_code = 3 THEN b.ks_stats 
      WHEN c.test_code = 4 THEN b.ginni 
      WHEN c.test_code = 5 THEN b.auroc 
      WHEN c.test_code = 6 THEN b.info_stats 
      WHEN c.test_code = 7 THEN b.kl_stats 
        END val1 
    FROM combined_approach b inner join test_output c 
      on b.v_report_id = c.v_report_id 
      and c.upper_score = b.band_code 
      WHERE c.v_report_id = lv_report_id 
       group by v_report_id   
) source_table 
on (target_table.v_report_id = source_table.v_report_id 
    and target_table.v_report_id = lv_report_id) 
when matched then update 
    SET target_table.upper_value = source_table.val1;