我需要在 postgres 中生成一个视图,其中包含基于列中的n值的行。n
让我们举个例子。我有一个这样的表:
A* | B | C
--------------------
abc | def | 4
ghi | jkl | 7
Run Code Online (Sandbox Code Playgroud)
我需要生成一个如下所示的视图:
A | B | C
------------------------
abc | def | 4
abc | def | 4
abc | def | 4
abc | def | 4
ghi | jkl | 7
ghi | jkl | 7
ghi | jkl | 7
ghi | jkl | 7
ghi | jkl | 7
ghi | jkl | 7
ghi | jkl | 7
Run Code Online (Sandbox Code Playgroud)
有没有办法巧妙地做到这一点?目前我正在做 N UNION ALL,其中 N 足够大以涵盖所有情况(例如,在本例中为 7)。
只需使用generate_series():
select t.*, generate_series(1, t.c)
from t ;
Run Code Online (Sandbox Code Playgroud)
如果您不需要结果集中的值,请使用横向联接:
select t.*
from t, lateral
generate_series(1, t.c);
Run Code Online (Sandbox Code Playgroud)
或者:
select t.*
from t cross join lateral
generate_series(1, t.c);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1374 次 |
| 最近记录: |