基于MYSQL使用CASE WHEN将多行数据转换为单行数据

为了阅读方便,现在需要将查询出来多条数据转换为单行数据,现在可以使用CASE WHEN的方法转换为单行数据。

数据表

CREATE TABLE `device_info` (
  `id` int(11) NOT NULL,
  `resource_type` int(2) DEFAULT NULL COMMENT '类型',
  `device_code` varchar(255) DEFAULT NULL COMMENT '编码',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

其中类型值有1,2两种类型,device_code设备编码有多种,现在想实现,统计每个设备编码有多少种类型1的数据,有多少种类型2 的统计数据。

数据

idresource_typedevice_code
12A1101
22A1101
31A2001
42A2001
51A2001
61A1101

SQL实现

select 
	device_code,
	SUM(CASE WHEN resource_type = 1 THEN 1 ELSE 0 END) AS type1,
	SUM(CASE WHEN resource_type = 2 THEN 1 ELSE 0 END) AS type2
from device_info group by device_code

结果

device_codetype1type2
A110112
A200121

实现思路

先通过设备编码进行分组,然后使用CASE WHEN的方法,如果是类型1则设为1,然后其他值就是0,这样使用sum方法跟count(id) ...where resource_type = 1是一样的效果,这样就实现多行转单行的效果,阅读就比较方便!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值