从 PostgreSQL 中的行生成系列
Generate Series from Rows in PostgreSQL
我有一个 table of reservations
,它有两列(started_at
和 ended_at
)。我想构建一个查询,将预订行扩展到它们各自的日期。因此,例如,如果预订持续了 5 天,我想要为它返回 5 行。大致如下:
当前输出
id | started_at | ended_at
----------------------------
1 | 2016-01-01 | 2016-01-05
2 | 2016-01-06 | 2016-01-10
期望的输出
id | date
---------------
1 | 2016-01-01
1 | 2016-01-02
1 | 2016-01-03
1 | 2016-01-04
1 | 2016-01-05
2 | 2016-01-06
2 | 2016-01-07
2 | 2016-01-08
2 | 2016-01-09
2 | 2016-01-10
我认为 generate_series
在这里可能有用,但我不确定语法。非常感谢任何帮助
SQL Fiddle
这在您的 fiddle
上运行正常
SELECT id, to_char(generate_series(started_at, ended_at, '1 day'),'YYYY-MM-DD') as date
FROM reservations;
我有一个 table of reservations
,它有两列(started_at
和 ended_at
)。我想构建一个查询,将预订行扩展到它们各自的日期。因此,例如,如果预订持续了 5 天,我想要为它返回 5 行。大致如下:
当前输出
id | started_at | ended_at
----------------------------
1 | 2016-01-01 | 2016-01-05
2 | 2016-01-06 | 2016-01-10
期望的输出
id | date
---------------
1 | 2016-01-01
1 | 2016-01-02
1 | 2016-01-03
1 | 2016-01-04
1 | 2016-01-05
2 | 2016-01-06
2 | 2016-01-07
2 | 2016-01-08
2 | 2016-01-09
2 | 2016-01-10
我认为 generate_series
在这里可能有用,但我不确定语法。非常感谢任何帮助
SQL Fiddle
这在您的 fiddle
上运行正常SELECT id, to_char(generate_series(started_at, ended_at, '1 day'),'YYYY-MM-DD') as date
FROM reservations;