postgresql—如何在sql中展开行以分析数据计数

ui7jx7zq  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(408)

我有一个以下类型的表(我们称之为mytable):

Name     | Date             | no_appointments    | Class |
----------+------------------+--------------------+-------+
 A        | 2019-04-01       | 2                  |   1   |
 B        | 2019-05-01       | 4                  |   0   |

我想通过重复每个行来扩展行,重复no\u约会指定的次数(相当于r的次数) expandRows() 函数)。
我使用的是postgresql12.1。
提前谢谢!

5ktev3wc

5ktev3wc1#

使用 generate_series() :

select t.*, n.n
from t cross join lateral
     generate_series(1, t.no_appointments, 1) gs(n);

实际上postgres允许语法如下:

select t.*, generate_series(1, t.no_appointments, 1) as n
from t;

但是,我不喜欢更改 select 条款。

dwbf0jvd

dwbf0jvd2#

在postgres中,你可以简单地使用 generate_series() 以及横向连接:

select t.*, x.i
from mytable t
cross join lateral generate_series(1, t.no_appointments) as x(i)

结果集中的最后一列包含每行的迭代次数。如果这对您来说不是一个合理的信息,您可以删除它。

相关问题