SQL Select - แปลงแถวในคอลัมน์

ค่อนข้างธรรมดา แต่ตอนนี้ฉันติดอยู่

บนฐานข้อมูล Informix (ไม่มีตัวเลือก pivot) ฉันกำลังค้นหาวิธีแบบไดนามิกในการแปลงตารางต่อไปนี้โดยใช้ 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