我编写了一个计算成本较高的选择查询,它会生成特定的结果集。我需要将此结果插入到一个表中,并将该结果集的聚合插入到另一个表中。我需要在单个事务中完成这些操作,而不是使用两个事务,因为这可能会导致无关紧要的数据问题。
示例场景 我有一个表,其中包含有关员工姓名、部门和工资的数据
名字 | 部门 | 工资 |
---|---|---|
杰森 | 金融 | 100 |
谍影重重 | 金融 | 120 |
迈克尔 | 金融 | 90 |
罗伯特 | 销售 | 75 |
唐尼 | 销售 | 500 |
马修 | 工程 | 10 |
汤姆 | 工程 | 90 |
我想将此表中的数据插入到表 A 中,每个部门的工资总和大于 100。在表 B 中,我想为每个部门插入一行,每个部门的工资总和。因此我的表 A 会是这样的
名字 | 部门 | 工资 |
---|---|---|
杰森 | 金融 | 100 |
谍影重重 | 金融 | 120 |
迈克尔 | 金融 | 90 |
罗伯特 | 销售 | 75 |
唐尼 | 销售 | 500 |
表b就像
部门 | 工资 |
---|---|
金融 | 310 |
销售 | 575 |
工程 | 100 |
请您帮助我了解如何在 Oracle 中执行此操作。
你可以使用
INSERT ALL
INSERT ALL
INTO table1 (<cols to insert 1>)
VALUES (<cols from result>)
INTO table2 (<cols to insert 2>)
VALUES (< cols from result>)
WITH dat AS (
< your data >
)
SELECT * FROM dat;
供参考。