如何在Netezza中生成1到N的连续数字范围序列
Netezza生成1到N连续数字的实现方案
以下是两种常用的无依赖简便实现,以N=5为例:
- 方案1:使用内置系统视图
_v_vector_idx(性能最优,推荐)_v_vector_idx是Netezza自带的系统视图,自带从0开始的连续整数序列,直接过滤即可得到目标结果:
SELECT seq + 1 AS continuous_num FROM _v_vector_idx WHERE seq < 5 ORDER BY continuous_num;
运行后输出的单列结果就是1、2、3、4、5,只要把WHERE条件里的5替换为你需要的N值即可。
- 方案2:使用递归CTE(兼容性强,无权限要求)
如果环境限制无法访问系统视图,可以用递归CTE实现:
WITH RECURSIVE seq_gen(n) AS ( SELECT 1 UNION ALL SELECT n + 1 FROM seq_gen WHERE n < 5 ) SELECT n AS continuous_num FROM seq_gen;
同样将WHERE条件中的5替换为目标N值即可,该方案适合生成中小规模的连续序列,超大范围序列优先使用方案1。
内容的提问来源于stack exchange,提问作者Kyoto
相关产品推荐
相关产品推荐

