Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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 更新或合并到或其他任何内容_Sql_Oracle_Plsql - Fatal编程技术网

Sql 更新或合并到或其他任何内容

Sql 更新或合并到或其他任何内容,sql,oracle,plsql,Sql,Oracle,Plsql,我正在使用oraclepl/SQL。 我有表A: ID SALES -------- 1 5 2 3 3 231 2 1 3 421 1 2 表B: ID REGION ------------ 1 London 2 New-York 3 Paris 4 Dublin 5 Munich 表C: ID REGION ------------ 1 London 2 New-York 我还有表D: ID SUM_OF_SALES ---

我正在使用oraclepl/SQL。 我有表A:

ID  SALES
--------
1   5
2   3
3   231
2   1
3   421
1   2
表B:

ID  REGION
------------
1   London
2   New-York
3   Paris
4   Dublin
5   Munich
表C:

ID  REGION
------------
1   London
2   New-York
我还有表D:

ID  SUM_OF_SALES
------------
1   .
2   .
3   .
任务是用表A中按ID列分组的列SALES之和填充表D中销售的SUM值,其中A.ID=B.ID,B.REGION=C.REGION。我想要的结果是:

ID  SUM_OF_SALES
------------
1   7
2   4
3   .

我将非常感谢您为这项任务提供不同的方法。

您真的需要物理表吗?你可能想考虑一个视图,那么你甚至不需要更新。只是一个想法。
MERGE INTO  d
USING (SELECT a.id, SUM(a.sales) sum_of_sales
       FROM   a,b,c
       WHERE  a.id = b.id
       AND    b.region = c.region
       GROUP BY a.id) q
WHEN MATCHED THEN UPDATE SET d.sum_of_sales = q.sum_of_sales