行列转换:MySQL中的数据变形魔法

行转列

使用CASE函数+聚合函数

行列转换:MySQL中的数据变形魔法_第1张图片

SELECT
    MAX(CASE WHEN salesperson = 'John' THEN sales_amount END) AS John_Sales,
    MAX(CASE WHEN salesperson = 'Alice' THEN sales_amount END) AS Alice_Sales
FROM sales_data;

行列转换:MySQL中的数据变形魔法_第2张图片

列转行

使用UNIO连接每列数据
行列转换:MySQL中的数据变形魔法_第3张图片

SELECT product_id,'store1' store,store1 price FROM products WHERE store1 IS NOT NULL
UNION 
SELECT product_id,'store2' store,store2 price FROM products WHERE store2 IS NOT NULL
UNION
SELECT product_id,'store3' store,store3 price FROM products WHERE store3 IS NOT NULL

行列转换:MySQL中的数据变形魔法_第4张图片

你可能感兴趣的:(mysql,数据库)