首页 > 代码库 > Mysql 行列转换
Mysql 行列转换
1、创建表
| 1 | #0 | 宝安 | 11 |
| 2 | #0 | 福田 | 12 |
| 3 | #0 | 罗湖 | 13 |
| 4 | #93 | 宝安 | 21 |
| 5 | #93 | 福田 | 22 |
| 6 | #93 | 罗湖 | 23 |
| 7 | #97 | 宝安 | 31 |
| 8 | #97 | 福田 | 32 |
运行结果例如以下:
CREATE TABLE `gas` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `oil` VARCHAR(100) NULL DEFAULT NULL, `district` VARCHAR(100) NULL DEFAULT NULL, `price` DOUBLE NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=11;
2、測试数据例如以下。select * from gas;
| id | oil | district | price || 1 | #0 | 宝安 | 11 |
| 2 | #0 | 福田 | 12 |
| 3 | #0 | 罗湖 | 13 |
| 4 | #93 | 宝安 | 21 |
| 5 | #93 | 福田 | 22 |
| 6 | #93 | 罗湖 | 23 |
| 7 | #97 | 宝安 | 31 |
| 8 | #97 | 福田 | 32 |
| 9 | #97 | 罗湖 | 33 |
3、行列转换:
select ifnull(oil,'total') as oil, sum(if(district='宝安',price,0)) AS BA, sum(if(district='福田',price,0)) AS FT, sum(if(district='罗湖',price,0)) AS LH, SUM(price) AS TOTAL from gas group by oil with rollup ;
运行结果例如以下:
| oil | BA | FT | LH | TOTAL |
| #0 | 11 | 12 | 13 | 36 |
| #93 | 21 | 22 | 23 | 66 |
| #97 | 31 | 32 | 33 | 96 |
| total | 63 | 66 | 69 | 198 |
Mysql 行列转换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。