Я всегда забываю, как использовать UNPIVOT, и поэтому многие документы ориентированы на числовые данные, а не на общие данные типа «ключ-значение». Вот что мне на самом деле часто приходится делать.
Код
Вот моя исходная таблица source_table
, внутри базы данных Oracle:
record_id | страна | пол | имя_лф | другой_хлам |
---|---|---|---|---|
123 | Азербайджан | F | Амджит, Ануш | 123abc |
456 | Зимбабве | N | Боргес, Бенита | def456 |
Вот SQL-запрос:
select
record_id
, field_key -- Arbitrary naming choice; call this anything you want.
, field_value -- Arbitrary naming choice; call this anything you want.
, name_lf
from source_table
unpivot (
field_value -- Arbitrary naming choice; call this anything you want.
for field_key -- Arbitrary naming choice; call this anything you want.
in (
country
, gender
)
);
А вот результирующие данные:
record_id | ключ_поля | значение_поля | имя_лф |
---|---|---|---|
123 | СТРАНА | Азербайджан | Амджит, Ануш |
123 | ГЕНДЕР | F | Амджит, Ануш |
456 | СТРАНА | Зимбабве | Борхес, Бенита |
456 | ГЕНДЕР | N | Борхес, Бенита |