SQL Select - преобразование строк в столбцы

Довольно простой, но я застрял в данный момент.

В базе данных Informix (без опции сводки) я ищу динамический способ преобразования следующей таблицы с помощью SQL:

book       | info  | value
-----------------------------
Moby Dick  | price | high
Moby Dick  | stock | few
Hamlet     | price | low
Hamlet     | stock | many
Faust      | price | medium
Faust      | stock | normal

Результирующая таблица:

book       | price  | stock
-----------------------------
Moby Dick  | high   | few
Hamlet     | low    | many
Faust      | medium | normal

Спасибо за вашу помощь!


person FutureCap    schedule 07.07.2016    source источник


Ответы (1)


Вы можете агрегировать на основе CASE выражения, сгруппированного по книге. Попробуйте что-нибудь вроде этого.

SELECT book,
MAX(CASE WHEN info = 'price' THEN value END) as price,
MAX(CASE WHEN info = 'stock' THEN value END) as stock
FROM table1
GROUP BY book
person ughai    schedule 07.07.2016
comment
Правильно, но мое значение на самом деле является строкой. Плохой пример, я меняю его. - person FutureCap; 07.07.2016
comment
Используйте MAX в этом случае - person ughai; 07.07.2016