MySQL 行列相互转换

行列相互转换

/*创建表*/
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;

 

 

转载于:https://www.cnblogs.com/niniya/p/9007157.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值