2014-01-30 43 views
5

這裏使用的序列創建語法:在Netezza公司我想在一個case語句使用序列,但該序列值不增加

CREATE SEQUENCE BD_ID_SEQ AS INTEGER 
    START WITH 999 
    INCREMENT BY 1 
    NO MINVALUE 
    NO MAXVALUE 
    NO CYCLE; 

我有下列值記錄的表:

 
b_id 
------- 
2547 
NULL 
2800 
NULL 
NULL 
NULL 
NULL 

我運行以下命令:

select case 
      when b_id is NULL then cast((select next value for bd_id_seq) as character varying(10)) 
      else b_id 
     end b_id 
from table1; 

結果說到:

 
b_id 
------- 
2547 
1000 
2800 
1000 
1000 
1000 
1000 

我期待:

 
2547 
1000 
2800 
1001 
1002 
1003 
1004 

任何想法,爲什麼在case語句的順序似乎不增加過去的第一價值? 謝謝, Ginni

回答

6

你需要改變你調用下一個值的方式。只要刪除select並請求下一個值。如下所示。

select case 
      when b_id is NULL then cast((next value for bd_id_seq) as character varying(10)) 
      else b_id 
     end b_id 
from table1; 
+0

爲什麼這不是答案?謝謝@Niederee – KalC