UNPIVOT для пары ключ-значение в Oracle SQL

Я всегда забываю, как использовать 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 Борхес, Бенита

Оцените статью
devanswers.ru
Добавить комментарий