Как расширить строки в SQL для анализа количества данных - PullRequest
1 голос
/ 17 июня 2020

У меня есть таблица (назовем ее MyTable) следующего типа:

 Name     | Date             | no_appointments    | Class |
----------+------------------+--------------------+-------+
 A        | 2019-04-01       | 2                  |   1   |
 B        | 2019-05-01       | 4                  |   0   |

И я хотел бы расширить строки, повторяя каждую из них количество раз, указанное no_appointments (эквивалент функции R expandRows()).

Я использую PostgreSQL 12.1.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

В Postgres вы можете просто использовать generate_series() и боковое соединение:

select t.*, x.i
from mytable t
cross join lateral generate_series(1, t.no_appointments) as x(i)

Последний столбец в наборе результатов содержит номер итерации каждой строки. Вы можете удалить, если это не является для вас разумной информацией.

0 голосов
/ 17 июня 2020

Используйте generate_series():

select t.*, n.n
from t cross join lateral
     generate_series(1, t.no_appointments, 1) gs(n);

На самом деле Postgres допускает синтаксис как:

select t.*, generate_series(1, t.no_appointments, 1) as n
from t;

Однако мне не нравится изменять количество строк в select пункт.

...