【问题标题】:In Netezza I'm trying to use a sequence in a case statement but the sequence value doesn't increment在 Netezza 中,我尝试在 case 语句中使用序列,但序列值不会增加
【发布时间】:2014-02-23 05:29:28
【问题描述】:

这里是使用的序列创建语法:

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

我有一个包含以下值记录的表:

出价 -------- 2547 空值 2800 空值 空值 空值 空值

我运行以下命令:

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;

结果来了:

出价 -------- 2547 1000 2800 1000 1000 1000 1000

我期待:

2547 1000 2800 1001 1002 1003 1004

任何想法为什么在 case 语句中序列似乎没有超过第一个值? 谢谢, 基尼

【问题讨论】:

    标签: netezza sequence-sql


    【解决方案1】:

    您需要更改调用下一个值的方式。只需删除 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;
    

    【讨论】:

    • 为什么这不是一个答案?谢谢@Niederee
    猜你喜欢
    • 2020-04-09
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多