【发布时间】: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,例如谢谢
【问题讨论】:
-
您有尝试过的示例吗?
是否有任何使用 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)
【讨论】:
_v_vector_idx 有 1,024 行,因此只要最大数量不大于该数量,它就可以工作。