首页 > 数据库技术 > 详细

MySQL 行列相互转换

时间:2018-05-08 11:51:27      阅读:213      评论:0      收藏:0      [点我收藏+]

行列相互转换

/*创建表*/
CREATE TABLE ic (
    NAME VARCHAR (20),
    Product VARCHAR (20),
    amount INT
);
INSERT INTO ic
VALUES
    (王一, A1, 20),
    (王一, A3, 150),
    (王一, A2, 10),
    (赵二, A1, 52),
    (赵二, A2,46),
    (赵二, A3,78),
    (刘六, A1,55),
    (刘六, A2,20),
    (刘六, A3,86);

SELECT * FROM ic;

技术分享图片

想要用product列的值做列,列名变为 name,A1,A2,A3。

CREATE TABLE ic_1
SELECT name ,
SUM(IF(Product=A1,amount,0)) AS A1,
SUM(IF(Product=A2,amount,0)) AS A2,
SUM(IF(Product=A3,amount,0)) AS A3
FROM ic
GROUP BY name;

 

技术分享图片

 如果将ic_1表再变回到原来的样子

SELECT name, A1 AS Product, A1 AS amount from ic_1
UNION
SELECT name, A2 AS Product, A2 AS amount from ic_1
UNION
SELECT name, A3 AS Product, A3 AS amount from ic_1
ORDER BY name;

 技术分享图片

 

MySQL 行列相互转换

原文:https://www.cnblogs.com/niniya/p/9007157.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!