В Netezza я пытаюсь использовать последовательность в выражении case, но значение последовательности не увеличивается

Вот синтаксис создания последовательности:

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

У меня есть таблица со следующими значениями записей:

b_id
-------
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;

Результат приходит к:

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

Я ожидал:

2547
1000
2800
1001
1002
1003
1004

Есть идеи, почему в операторе case последовательность, кажется, не увеличивается после первого значения? Спасибо Джинни

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;
Другие вопросы по тегам