2016-03-22 17 views
0

Bazı öğeler için sıfır fiyat satırının eksik olduğu ve bu satırları o satırlara eklemek istediğim bir tedarik/fiyat eğrisi tablosum var. Tablo şu şekildedir:Eksik satırları ekle

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

madde başına satır sayısı farklı olabilir (gibi bir madde için 3 öğesi A için puan ve daha az ya da daha fazla nokta). Yukarıda, sıfır fiyat ve miktar noktası öğesi B'ye yönelik eksik, bu yüzden güncellenmiş tablo bu gibi görünmelidir:

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 

Nerede yeni bir satır (sıfır fiyat/miktar ile nokta) eklenir ve nokta diğer satırlar güncellenir. Yeni satır, 1'in olmadığı yerde tüm öğeler için eklenmelidir. Fiyat = 0 ve Miktar = 0. Oracle sql sunucusunda nasıl yapılır?

cevap

3

Hmmm, bunu iki adımda yapabilirsiniz. İlk olarak, 0 değeri ile point sokmak ve sonra değeri arttırılmalıdır

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

commit; 
: O

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 sütun artırmak