如何使用表中的值来循环导航?

时间:2016-04-13 14:13:54

标签: sql oracle plsql

我想使用table中的特定值作为while循环中的条件。

我有下表

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

我需要添加状态列。

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有另外的Status列,我想将Table_2'X'插入到Status列,其中while的条件未获取但是当循环遇到值'bb'时,Type列中的'Y'插入Status但仅对于10行,休息时应插入“Z”值。

循环的结果:

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

1 个答案:

答案 0 :(得分:0)

如Poole所述,您的样本数据/结果与您的解释不符。

在任何情况下,您都不需要游标或循环。下面的查询应该根据状态的条件进行一些修改。

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