mysql如何将查出来的某个字段变成表头

图片说明
其中,装备名称是从前台选择的,要统计各单位的数量,表头是选的装备,求解决方案
(**装备名称是前台传来的并且是编码,所以关联了xlb类型信息表,数量是统计的当前库存的根据在库状态**)

原始数据如下:

select * from test.t_test t;

图片说明
转换sql:

select t.cpn_name as `单位名称`, 
    sum(if(t.device_name='夜视仪', t.total, 0)) as `夜视仪`,
    sum(if(t.device_name='水壶', t.total, 0)) as `水壶`,
    sum(if(t.device_name='警戒带', t.total, 0)) as `警戒带`,
    sum(if(t.device_name='称重器', t.total, 0)) as `称重器`,
    sum(if(t.device_name='路障', t.total, 0)) as `路障`,
    sum(if(t.device_name='防爆毯', t.total, 0)) as `防爆毯`,
    sum(if(t.device_name='发电机', t.total, 0)) as `发电机`
        from test.t_test t group by t.cpn_name;

图片说明

做是可以做,但是单位名称数量和装备名称数量都需要确定,而且都需要写死在sql中,速度较慢,不建议这么做,比如:

select (select count(*) from table where  '装备名称'= ''夜视仪 and ‘'单位名称'=''市本级),······

建议先查出数据,数据转换在代码中做,或者可以新建一张表。

你这个要么在sql里面做比较麻烦,要么全查出来在js里面组装,如果对查询速度没什么要求,可以分类查询单位名称和设备名称谁的种类少就用谁分类然后用另一类排序每次查一排或者一行。

图片说明

你这个应该是行转列的问题,网上有很多这样的解决方法