如何在SQL中遍历行并将行设置为列之和
假设我有一张表1:如何在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中
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。