генерировать серийный номер в порядке убывания, учитывая переменную в netezza aginity sql

Есть ли какой-либо синтаксис SQL, использующий netezza 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

также нажмите, чтобы увидеть снимок экрана, например, спасибо


person user15957051    schedule 18.05.2021    source источник
comment
У вас есть пример того, что вы пробовали?   -  person Guy Lowe    schedule 18.05.2021


Ответы (1)


Вы можете использовать таблицу _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)
person Aniket Kulkarni    schedule 18.05.2021
comment
@user15957051 . . . Это хороший ответ, но имейте в виду, что _v_vector_idx имеет 1024 строки, поэтому он работает, пока максимальное число не больше этого. - person Gordon Linoff; 18.05.2021