Mysql查询多个分组数据时其中一个分组以行转列

需求

查询同表的不同板块的不同企业类型的总数

分析

第一步: 以板块为行分组 第二步: 以企业类型为列分组,汇总每个企业类型的总数

SELECT dd.dict_value,ep.plate_code AS 板块代码,pc.plate_name AS 板块名称,
          IF(dd.dict_label = 壳公司,COUNT(ep.type),--) AS 壳公司,
          IF(dd.dict_label = 项目类公司,COUNT(ep.type),--) AS 项目类公司,
          IF(dd.dict_label = 通道类公司,COUNT(ep.type),--) AS 通道类公司,
          IF(dd.dict_label = 实体公司,COUNT(ep.type),--) AS 实体公司,
          IF(dd.dict_label = 平台公司,COUNT(ep.type),--) AS 平台公司
     FROM enterprise AS ep
LEFT JOIN plate_config AS pc
       ON ep.plate_code = pc.plate_code
LEFT JOIN sys_dict_data AS dd
       ON ep.type = dd.dict_value
LEFT JOIN sys_dict_type AS dt
       ON dd.dict_type = dt.dict_type
	WHERE ep.is_del=0  # 未逻辑删除
	  AND ep.fictitious=0 # 虚拟公司  0否1是
      AND ep.business_status NOT IN(注销, 迁出,转让)
	  AND dt.dict_name= 企业类型
 GROUP BY ep.plate_code,dd.dict_value  # 以板块名称和字段编码值(即公司类型)都相同的分为1组
 ORDER BY ep.plate_code;

查询结果

经验分享 程序员 微信小程序 职场和发展