2016-03-22 8 views
0

Ich habe eine Tabelle der Angebots-/Preiskurve, wobei für einige Artikel die Nullpreiszeile fehlt und ich diese Zeile für diese Artikel einfügen möchte. Die Tabelle sieht wie folgt aus:Fehlende Zeile (n) einfügen

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

Die Anzahl der Zeilen pro Stück unterschiedlich sein können (wie 3 Punkte für Punkt A, und weniger oder mehr Punkte für einen anderen Artikel). Im obigen fehlt der Null Preis und Menge Punkt für Punkt B, so dass die aktualisierte Tabelle sollte wie folgt aussehen:

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 

Wenn eine neue Zeile (Punkt mit Null Preis/Menge) zugegeben und Punkt der andere Zeilen werden aktualisiert. Die neue Zeile sollte für alle Elemente hinzugefügt werden, bei denen Punkt 1 nicht Price = 0 und Quantity = 0 ist. Wie geht es in Oracle SQL Server?

Antwort

3

Hmmm, Sie können dies in zwei Schritten tun. Erstens würde ich point mit einem Wert von 0 einzufügen und dann den Wert erhöhen:

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; 

Dann erhöhen die point Spalte:

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

commit;