在Netezza中,我试图在case语句中使用序列,但序列值不会增加

时间:2014-01-30 18:20:49

标签: netezza sequence-sql

以下是使用的序列创建语法:

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语句中为什么序列似乎没有超过第一个值? 谢谢, 海金妮

1 个答案:

答案 0 :(得分: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;