SQL Select - mengubah baris menjadi kolom

Cukup mendasar, tetapi saya terjebak saat ini.

Pada database Informix (tanpa opsi pivot), saya mencari cara dinamis untuk mengubah tabel berikut menggunakan SQL:

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

Tabel yang dihasilkan:

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

Terima kasih atas bantuan Anda!


person FutureCap    schedule 07.07.2016    source sumber


Jawaban (1)


Anda dapat menggabungkan berdasarkan CASE ekspresi yang dikelompokkan berdasarkan buku. Cobalah sesuatu seperti ini.

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
Benar, tapi nilai saya sebenarnya adalah string. Contoh buruk, saya mengubahnya. - person FutureCap; 07.07.2016
comment
Gunakan MAX dalam hal ini - person ughai; 07.07.2016