【发布时间】:2021-03-02 12:59:22
【问题描述】:
我正在使用 Vertica 分析数据库 v9.2.1-20,
并尝试使用 NEXTVAL() 函数在记录级别按条件获取下一个序列值。
这里是例子
CREATE SEQUENCE v_seq START 1;
CREATE TABLE test_seq (id INT, flag int);
INSERT INTO test_seq VALUES (1, 0);
INSERT INTO test_seq VALUES (2, 1);
INSERT INTO test_seq VALUES (3, 1);
INSERT INTO test_seq VALUES (4, 0);
INSERT INTO test_seq VALUES (5, 0);
INSERT INTO test_seq VALUES (6, 1);
INSERT INTO test_seq VALUES (7, 1);
SELECT id,
flag,
CASE
WHEN flag = 0 THEN NEXTVAL('v_seq')
ELSE CURRVAL('v_seq')
END as group_id
FROM test_seq
ORDER BY ID;
预期结果:
id flag group_id
1 0 1
2 1 1
3 1 1
4 0 2
5 0 3
6 1 3
7 1 3
实际结果:
id flag group_id
1 0 1
2 1 2
3 1 3
4 0 4
5 0 5
6 1 6
7 1 7
看起来无论 WHEN 条件都在调用 NEXTVAL() 函数。
有什么方法可以按条件调用吗?
谢谢!
【问题讨论】: