插入缺少的行(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;
