Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ora-30926错误_Sql_Oracle_Merge - Fatal编程技术网

Sql ora-30926错误

Sql ora-30926错误,sql,oracle,merge,Sql,Oracle,Merge,可能重复: 我正在尝试执行下面的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

可能重复:

我正在尝试执行下面的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;

我认为您有这个错误,因为在using子句中有具有相同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;