我有这样的表格:
| 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;