插入缺失的行

时间:2016-03-22 12:18:57

标签: sql oracle sql-insert

我有一个供应/价格曲线表,对于某些项目零价行缺失,我想为这些项插入该行。该表如下所示:

Item  Point  Price  Quantity  
-----------------------------    
A     1      0       0  
A     2      100     5  
A     3      200     10  
B     1      50      6    
B     2      70      8

每个项目的行数可以不同(对于项目A为3个点,对于另一个项目为少于或多个点)。在上文中,项目B缺少零价格和数量点,因此更新的表格应如下所示:

Item  Point  Price  Quantity  
-----------------------------    
A     1      0       0  
A     2      100     5  
A     3      200     10    
B     1      0       0  
B     2      50      6    
B     3      70      8  

添加新行(零价格/数量的点)并更新其他行的点。应该为所有项目添加新行,其中第1点不是Price = 0且Quantity = 0.如何在Oracle sql server中执行此操作?

1 个答案:

答案 0 :(得分:3)

嗯,你可以分两步完成。首先,我将point插入值为0,然后递增值:

insert into t(item, point, price, quantity)
    select item, 0 as point, 0 as price, 0 as quantity
    from t
    group by item
    having min(price) <> 0;

然后,增加point列:

update t
    set point = point + 1
    where exists (select 1 from t t2 where t2.item = t.item and t2.point = 0);

commit;