mysql分组行列转换统计,附属标签

 1.普通的数据表格

2.转换成下面这种表格结构统计 

1.cl.cont  当数据本条数据的条数不仅仅只有一条是 

SELECT
	qu.device_id,
	sum( IF ( cl.err_code = 'net_err', cl.count, 0 ) ) AS net_err,
	sum( IF ( cl.err_code = 'ble_err', cl.count, 0 ) ) AS ble_err,
	IFNULL(tmcq.client_stace, 0) as  clientStace
FROM
	tb_ma_quipment qu
	LEFT JOIN tb_client_log cl ON qu.device_id = cl.device_id
	LEFT JOIN tb_ma_client_quipment tmcq ON qu.device_id = tmcq.device_id 
GROUP BY
	qu.device_id 
ORDER BY
	net_err DESC,
	ble_err DESC
IFNULL(tmcq.client_stace, 0) as  clientStace

 用于多选框时的标记,这里mysql不能用sum,是用于去标记的值

2.如果本条数据仅仅只代表一条异常信息时

SELECT
	qu.device_id,
	sum(IF(( CASE cl.err_code WHEN 'net_err' THEN 1 END ) IS NULL,0,
	( CASE cl.err_code WHEN 'net_err' THEN 1 END ) ) ) AS hid_err,
	sum(IF(( CASE cl.err_code WHEN 'ble_err' THEN 1 END ) IS NULL,0,
	( CASE cl.err_code WHEN 'ble_err' THEN 1 END ) ) ) AS ble_err,
	sum(IF(( CASE cl.err_code WHEN 'web_err41' THEN 1 END ) IS NULL,0,
	( CASE cl.err_code WHEN 'web_err41' THEN 1 END ) ) ) AS web_err41,
	sum(IF(( CASE cl.err_code WHEN 'ukey_err' THEN 1 END ) IS NULL,0,
	( CASE cl.err_code WHEN 'ukey_err' THEN 1 END ) ) ) AS ukey_err,
	sum(IF(( CASE cl.err_code WHEN 'hid_err' THEN 1 END ) IS NULL,0,
	( CASE cl.err_code WHEN 'hid_err' THEN 1 END ) ) ) AS hid_err,
	sum(IF(( CASE cl.err_code WHEN 'web_err43' THEN 1 END ) IS NULL,0,
	( CASE cl.err_code WHEN 'web_err43' THEN 1 END ) ) ) AS web_err43,
	sum(IF(( CASE cl.err_code WHEN 'web_err44' THEN 1 END ) IS NULL,0,
	( CASE cl.err_code WHEN 'web_err44' THEN 1 END ) ) ) AS web_err44 ,
	IFNULL(tmcq.client_stace,0)  as clientStace
FROM
	tb_ma_quipment qu
	LEFT JOIN tb_client_log cl ON qu.device_id = cl.device_id 
	left join tb_ma_client_quipment  tmcq  on qu.device_id=tmcq.device_id
GROUP BY
	qu.device_id 
ORDER BY
err_code desc,ble_err desc,web_err41 desc,ukey_err desc,ukey_err desc,hid_err desc,web_err43 desc,web_err44 desc

猜你喜欢

转载自blog.csdn.net/c_molione/article/details/82427382
今日推荐