给定netezza aginity sql中的变量,按降序生成序列号

问题描述

是否有任何使用 netezza sqlsql 语法,给定列号,尝试按降序生成数字行至 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)