MYSQL 如何将查询结果作为列展示
原始数据 a:
设备号id | 机构号org | 品牌号brand | 正常时长normal | 总时长total |
---|---|---|---|---|
1 | A1 | B1 | 5 | 10 |
2 | A1 | B2 | 6 | 10 |
3 | A2 | B1 | 7 | 10 |
4 | A2 | B2 | 8 | 10 |
5 | A2 | B2 | 9 | 10 |
获得结果(正常率):
正常率 | B1 | B2 |
---|---|---|
A1 | 50 | 60 |
A2 | 70 | 85 |
现在已知:
SELECT org,
CONVERT((SUM(IF(atmBrand='B1',normal,0))/SUM(IF(atmBrand='B1',total,0)))*100, DECIMAL(15, 2)) as 'B1',
CONVERT((SUM(IF(atmBrand='B2',normal,0))/SUM(IF(atmBrand='B2',total,0)))*100, DECIMAL(15, 2)) as 'B2'
FROM a
GROUP BY org
以上,步骤为:
1、IF/SUM查询到机构为A1、品牌为B1的正常时长之和、总时长之和。
2、CONVERT两者相除,取百分比,保留两位小数。
可以查询到结果表
如果,品牌列B的数目未知(不确定有几个),也不确定名称(不知道B1/B2…),要怎么查询?
也就是如何将查询结果作为列