Повторите количество строк в зависимости от значения столбца.

У меня есть таблица, которая выглядит так:

| 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;
Другие вопросы по тегам