问题描述
是否有任何使用 netezza sql 的 sql 语法,给定列号,尝试按降序生成数字行至 0。
下面是我正在尝试做的一个例子
之前
ID | NUMBER |
---|---|
A | 4 |
B | 5 |
之后
ID | NUMBER |
---|---|
A | 4 |
A | 3 |
A | 2 |
A | 1 |
B | 5 |
B | 4 |
B | 3 |
B | 2 |
B | 1 |
也请点击查看screenshot例如谢谢
解决方法
您可以为此使用 _v_vector_idx
表
select
id,idx
from
test join _v_vector_idx
on idx <= number
order
by id asc,idx desc ;
这是实际操作中的示例
select * from test
ID | NUMBER
-------+--------
A | 4
B | 5
(2 rows)
select id,idx from test join _v_vector_idx on
idx <= number order by id asc,idx desc ;
ID | IDX
-------+-----
A | 4
A | 3
A | 2
A | 1
A | 0
B | 5
B | 4
B | 3
B | 2
B | 1
B | 0
(11 rows)
insert into test values ('C',3);
INSERT 0 1
select * from test;
ID | NUMBER
-------+--------
A | 4
B | 5
C | 3
(3 rows)
select id,idx from test join _v_vector_idx
on idx <= number order by id asc,idx desc ;
ID | IDX
-------+-----
A | 4
A | 3
A | 2
A | 1
A | 0
B | 5
B | 4
B | 3
B | 2
B | 1
B | 0
C | 3
C | 2
C | 1
C | 0
(15 rows)