SQL Select - 将行转换为列

SQL Select - transform rows in columns

很基础,但我现在卡住了。

在 Informix 数据库(无数据透视选项)上,我正在寻找一种使用 SQL 转换以下 table 的动态方法:

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

结果table:

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

感谢您的帮助!

您可以根据按书籍分组的 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