Повторите количество строк в зависимости от значения столбца.
У меня есть таблица, которая выглядит так:
| 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?
2 ответа
Решение
Заимствуя ответ Абелисто, вы можете создать серию из duration_day
значение с generate_series()
табличная функция в списке источников строк. Функция использует duration_day
значение от my_table
через неявное боковое соединение.
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;