我需要在postgres中生成一个视图,其中包含基于列中的值nn行。
让我们举个例子。我有一张这样的桌子:

   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

有没有聪明的方法?目前,我正在做NUNION 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/

10-09 15:19