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
很基础,但我现在卡住了。
在 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