创建一个新列,需要处理序列中现有列值的总和

时间:2014-07-05 03:13:47

标签: sql oracle

我在表格中有以下列:

产品名称 量

如果产品名称相同,我想添加产品数量。例如,如果我有两次相同名称的产品,我希望添加产品的总数量并获得结果。

这是表格,我想添加相同项目的数量:

表格中的当前数据

Name            Quantity
Pen              3 
Pencil           2
Pen              6
Eraser           7
Eraser           6

预期输出:

Name                   Quantity         New Column
Pen                        3               3
Pen                        6               9 
Pencil                     2               2
Eraser                     7               7
Eraser                     6              13

2 个答案:

答案 0 :(得分:1)

要实现这一目标,您需要使用ROWNUM Sum Partition

可能是这样的

SELECT Name,
       Quantity,
       SUM(Quantity) Over (Partition By Name Order By ROWNUM) As Sum_Value
From Table1
Order By Name Desc;

<强> Fiddle Demo


输出:

NAME    QUANTITY    SUM_VALUE
-----------------------------
Pencil  2           2
Pen     3           3
Pen     6           9
Eraser  7           7
Eraser  6           13

答案 1 :(得分:0)

您可以添加处理此新列更新的插入,更新和删除触发器。示例(未经测试):

CREATE OR REPLACE TRIGGER X
   BEFORE INSERT ON T
   FOR EACH ROW
BEGIN
    set new.total_quantity := ( select sum(Quantity) from T
                                where name = :new.name ) + :new.quantity
END;
/

要使用Vignesh解决方案填充现有行