У меня возникли проблемы с полу-транспонированием приведенной ниже таблицы на основе столбца «ДЛИНА».Я использую базу данных Oracle, примеры данных:
+-----------+-----------+--------+------+
| PERSON_ID | PERIOD_ID | LENGTH | FLAG |
+-----------+-----------+--------+------+
| 1 | 1 | 4 | 1 |
| 1 | 2 | 3 | 0 |
| 2 | 1 | 4 | 1 |
+-----------+-----------+--------+------+
Я хотел бы удлинить эту таблицу на основе строки LENGTH;в основном дублирует строку для каждого значения в столбце LENGTH.
См. желаемую выходную таблицу ниже:
+-----------+-----------+--------+------+
| PERSON_ID | PERIOD_ID | NUMBER | FLAG |
+-----------+-----------+--------+------+
| 1 | 1 | 1 | 1 |
| 1 | 1 | 2 | 1 |
| 1 | 1 | 3 | 1 |
| 1 | 1 | 4 | 1 |
| 1 | 2 | 1 | 0 |
| 1 | 2 | 2 | 0 |
| 1 | 2 | 3 | 0 |
| 2 | 1 | 1 | 1 |
| 2 | 1 | 2 | 1 |
| 2 | 1 | 3 | 1 |
| 2 | 1 | 4 | 1 |
+-----------+-----------+--------+------+
Обычно я работаю в Posgres, поэтому Oracle является для меня новым.
Я нашел некоторые решения, использующие оператор connect by
, но они кажутся слишком сложными, особенно по сравнению с простой командой generate_series()
от Posgres.