插入缺少的行(s)

我有一个供应/价格曲线表,其中某些项目的零价格行缺失,我想为这些项目插入该行。 该表看起来像这样:

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分,其他项目为少于或多于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不是价格= 0和数量= 0.如何在Oracle sql server中执行此操作?


嗯,你可以分两步做。 首先,我将插入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;
链接地址: http://www.djcxy.com/p/62071.html

上一篇: Insert missing row(s)

下一篇: Sum straight and overtime in single Access query