我需要在postgres中生成一个视图,其中包含基于列中的值n
的n
行。
让我们举个例子。我有一张这样的桌子:
A* | B | C
--------------------
abc | def | 4
ghi | jkl | 7
我需要生成这样的视图:
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
有没有聪明的方法?目前,我正在做N
UNION ALL
的N大到足以涵盖所有的情况(例如,在这个案例7)。 最佳答案
只需使用generate_series()
:
select t.*, generate_series(1, t.c)
from t ;
如果不需要结果集中的值,请使用横向联接:
select t.*
from t, lateral
generate_series(1, t.c);
或:
select t.*
from t cross join lateral
generate_series(1, t.c);
关于sql - POSTGRES基于值n生成n行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49778747/