【问题标题】:generate serial number in decreasing order given a variable in netezza aginity sql给定netezza aginity sql中的变量,按降序生成序列号
【发布时间】:2021-05-18 04:12:51
【问题描述】:

是否有任何使用 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,例如谢谢

【问题讨论】:

  • 您有尝试过的示例吗?

标签: sql netezza aginity


【解决方案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)

【讨论】:

  • @user15957051 。 . .这是一个很好的答案,但请注意 _v_vector_idx 有 1,024 行,因此只要最大数量不大于该数量,它就可以工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多