任何人都可以指导我如何实现以下方案

时间:2017-11-22 17:18:16

标签: plsql oracle11g

我有源表和目标表,我在下面提到了一些计算,我想将源表中的计算结果集填充到目标表中。

目标表中的列已启用NOT NULL约束。

任何人都可以指导我达到以下要求。

消息来源表

Source_table1 >>

col1,
col2,
col3

Source_table2 >>

col1,
col2,
col3

TARGET TABLE:

Dest_table:

col1 >> Source_table1.col1+Source_table2.col1

col2 >> Source_table1.col2+Source_table2.col2

col3 >>  Dest_table.col1+Dest_table.col2

col4 >> Source_table1.col3+Source_table1.col3+Dest_table.col3

提前致谢。

1 个答案:

答案 0 :(得分:0)

您只需要三层总结,如下所示。一个简单的Insert into select应该比PL / SQL块更有效。根据您的一条评论,source_tab1.seq_no = source_tab2.seq_no是源表之间的连接条件。

INSERT INTO Dest_table (col1,
                        col2,
                        col3,
                        col4)
   SELECT dcol1,
          dcol2,
          dcol3,
          s1col3 + s2col3 + dcol3 dcol4
     FROM (SELECT dcol1,
                  dcol2,
                  dcol1 + dcol2 dcol3,
                  s1col3,
                  s2col3
             FROM (SELECT s1col1 + s2col1 dcol1,
                          s1col2 + s2col2 dcol2,
                          s1col3,
                          s2col3
                     FROM (SELECT s1.col1 s1col1,
                                  s1.col2 s1col2,
                                  s1.col3 s1col3,
                                  s2.col1 s2col1,
                                  s2.col2 s2col2,
                                  s2.col3 s2col3
                             FROM source_table1 s1
                                  JOIN source_table2 s2
                                     ON s1.seq_no = s2.seq_no)));