Plsql 谁能指导我如何实现下面的场景

Plsql 谁能指导我如何实现下面的场景,plsql,oracle11g,Plsql,Oracle11g,我有一些计算的源表和目标表,正如我在下面提到的,我想将计算的结果集从源表填充到目标表中 目标表中的列已启用非空约束 谁能指导我达到以下要求 源表: col1 >> Source_table1.col1+Source_table2.col1 col2 >> Source_table1.col2+Source_table2.col2 col3 >> Dest_table.col1+Dest_table.col2 col4 >> Source_t

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

目标表中的列已启用
非空
约束

谁能指导我达到以下要求

源表:

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
来源\u表1>

col1,
col2,
col3
col1,
col2,
col3
来源\u表2>

col1,
col2,
col3
col1,
col2,
col3
目标表:

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
目的地表格:

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

提前谢谢

您只需要三层求和,如下所示。在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)));

您是想提出一个查询还是希望我们编写整个查询?。而且不需要plsql。尝试使用简单的
insert-into-target select*from-source
和连接和子查询。如果你遇到困难,你一定会在这里得到帮助。重要的是,如果您尝试过任何查询,请尝试并发布查询。感谢kaushik的建议,我已经在PL/SQL中进行了尝试,并且实现了目标表的col1、col2、col3。我仍然没有任何想法来实现Dest_表COL4上的计算。如果你不介意你的建议,如果我按照你的方式去做,我会得到表中的col1和col2,我不会得到表中的col3和col4。这样我将得到无效的标识符。我在源表和目标表之间没有任何正确的关系。如果我对你的建议有任何错误,请纠正我。ThanksHow是
source\u table 1
source\u table 2
链接的?。我的意思是,对于
source\u table1
中的每条记录,它们在
source\u table2
中是有相同的行还是有多行?显示来自每个源表的数据的一些示例记录。我的意思是,这些是示例表,源表1和源表2有关系(让我们像这样建立关系,源表1.seq\u no=源表2.seq\u no)和源表的结果,以填充到dest\u表中。在源表之间(源表1,源表2)和目标表没有关系(source_tab1.seq_no=source_tab2.seq_no和dest_tab(无关系))。谢谢您的回答。之所以使用PL/SQL,这里我知道什么是源表、目标表、列及其计算。但我的要求是,我需要从源到目标填充相同的内容,但我永远不知道什么是源/目标表以及它的列和计算。运行时需要获取的所有值。除了col4,我在dest_表上做了所有的计算,在这里我只知道如何处理。现在我有了一些想法,我会让它充满活力,如果有任何疑问,我会回来。谢谢Kaushik抽出你的时间。