2016-04-13 13 views
0

Döngüde koşul olarak tablodan belirli bir değer kullanmak istiyorum.Döngüde gezinmek için tablodan değer nasıl kullanılır?

Ben

Type | Amount 
-------------- 
aa   50   
aa   50   
aa   50   
aa   50   
aa   50   
bb   null  
aa   100   
aa   100   
aa   100 
aa   100 
.. 
aa   80   
aa   100   
aa   90 
aa   100 
aa   80   
aa   100   
aa   100 
aa   100 

Ben durum sütununu eklemeniz gerekir aşağıdaki tablo var.

declare 
cursor c1 
is 
SELECT 
    Type         
, Amount                   
FROM Table; 

begin 

while c1.Type = 'bb' LOOP 

INSERT INTO TABLE_2 
(
Type, Amount, Status 
) 
VALUES 
(
Table.Type, Table.Amount, Status); 

END LOOP; 
END; 

table_2 ilave durumu sütunu olan ve tür sütununda döngü karşılaşılan değer 'bb' takıldığında süre gelen durumu 'Y' in achived değil, Durumu sütununa table_2 'X' için eklemek istiyorum Durum için ama sadece 10 satır için, dinlenme 'Z' değeri eklenmelidir.

döngünün sonucu:

Poole tarafından belirtildiği gibi
Type | Amount | Status 
------------------------ 
aa   50  X 
aa   50  X 
aa   50  X 
aa   50  X 
aa   50  X 
bb   null Z (1) 
aa   100  Z (2) 
aa   100  Z (3) 
aa   100  Z (4) 
aa   100  Z (5) 
..    
aa   80  Z (8) 
aa   100  Z (9) 
aa   90  Z (10) 
aa   100  Y 
aa   80  Y 
aa   100  Y 
aa   100  Y 
aa   100  Y 
+0

Çıktıdaki Y ve Z öğelerinizin açıklamanızla eşleşmiyor gibi görünmektedir. Ancak, orijinal verilerinizde sipariş verilecek bir şey yok gibi görünüyor, bu durumda durumun ne zaman uygulandığını nasıl anlayacaksınız? –

cevap

0

, örnek veri/sonuç, açıklama ile kabul etmez.

Her durumda, bir imleç veya döngü gerekmez. Sorunun altında, durumun durumuna bağlı olarak bazı değişiklikler yapılmalıdır.

INSERT INTO TABLE_2 
SELECT 
    Type         
, Amount 
, case Type when 'bb' then 'X' else 'Z' end                  
FROM Table 
+0

Bir döngü kullanmam gerekiyor çünkü sadece veritabanının bir kopyasını yazdım ve tablodaki daha karmaşık durumlarım var, bu yüzden onları tanımlamak için sıraya girmem gerekiyor. Soru, döngü sırasında gezinmek için tablodaki belirli bir dosyadaki değeri nasıl kullanacağınızdır? @stubs – Merix

+0

Neyi amaçladığınızdan emin değilim. Daha karmaşık durumlarda , ör. Type = 'bb' sonra 'X' , ne zaman Type = 'aa' ve miktar <= 50 olduğunda 'Z' else 'Y' sonunda – stubs

+0

tam olarak değil. = 'Bb' sonra 'X' yazın, ancak Type = 'aa' ve 'Z' olduğunda ve 12 ay için durum belirlendiğinde sonraki 12 ay için ayarlanmalıdır. Değişiklik cümleciğinde durum bildiriminin kullanılması mümkün değildir. @stubs – Merix

İlgili konular