根据列值重复行数



我有这样的表格:

| name |  start_date   |  duration_day|
========================================
|   A  |  2015-01-01   |       3      |
|   B  |  2015-01-02   |       2      |

现在我想得到这样的输出:

   | name |     date   |
   =====================
   |  A   | 2015-01-01 |
   |  A   | 2015-01-02 |
   |  A   | 2015-01-03 |
   |  B   | 2015-01-02 |
   |  B   | 2015-01-03 |

如何在PostgreSQL中执行此操作?

借用 Abelisto 的答案,您可以使用行源列表中的 generate_series() table 函数从duration_day值生成一个序列。该函数使用从my_table到隐式横向联接的duration_day值。

SELECT name, start_date + n AS date
FROM my_table, generate_series(0, duration_day - 1) AS x(n);
select
  name, 
  start_date + generate_series(0, duration_day - 1)
from
  your_table;

相关内容

  • 没有找到相关文章

最新更新