我有源表和目标表,我在下面提到了一些计算,我想将源表中的计算结果集填充到目标表中。
目标表中的列已启用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
提前致谢。
答案 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)));