Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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_Oracle11g - Fatal编程技术网

如何在SQL中遍历行并将行设置为列之和

如何在SQL中遍历行并将行设置为列之和,sql,oracle11g,Sql,Oracle11g,假设我有一张表1: id column2 column3 column4 row1 1 name1 1 1 row2 2 name2 1 1 row3 3 name3 1 1 row4 1 name1 1 1 我还有一张表2: id name1 name2 name3 row1 row2 row3 因此,表2中

假设我有一张表1:

        id    column2 column3 column4
row1     1    name1   1       1
row2     2    name2   1       1
row3     3    name3   1       1
row4     1    name1   1       1
我还有一张表2:

     id name1  name2  name3
row1     
row2    
row3     
因此,表2中的id在表1中的id中具有所有相同的值,除了唯一的值

我需要做的是取每个id的第3列和第4列下的值之和,并将它们设置为表2中相应的名称列,这取决于表1中的第2列

因此,得到的表2应该如下所示:

        id name1  name2  name3
row1      1  4       0      0
row2      2  0       2      0
row3      3  0       0      2
有人知道怎么做吗?对不起,如果我的问题措辞糟糕。
我使用的是Oracle服务器。

如果我理解得很好,您想在表2中插入“总和”吗

如果是这样,您可以这样做:

INSERT INTO table2(id, name1, name2, name3) 
SELECT id, 
   SUM(DECODE(column2, 'name1', (column3 + column4), 0)),
   SUM(DECODE(column2, 'name2', (column3 + column4), 0)),
   SUM(DECODE(column2, 'name3', (column3 + column4), 0))
FROM  table1
GROUP BY id;

你的实际数据库是什么?MySQL、SQL Server和Oracle都是非常不同的野兽。我使用的是Oracle Server。那么不要用MySQL和SQL Server来标记它——它们都不是Oracle。