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