mysql行转列 问题 SUM(IF(条件,列值,0))

mysql经典问题,将行转为列。

原表

sum(if(条件,列值,0))语法用例:

select name,sum(if(subject="语文",score,0)) as “语文” from grade GROUP BY name

if中第一个参数为条件,符合条件的内容才会将第二个参数相加,不符合的内容将第三个参数相加。

第二个参数为要相加的参数,可以用常量,也可以用字段值。

第三个参数为条件为假时相加的值,通常设为0.

为了将行转为列(这种操作一般用于统计),可使用如下语句:

select name,sum(if(subject="语文",score,0)) as “语文”,
sum(if(subject="数学",score,0)) as “数学”,sum(if(subject="英语",score,0)) as “英语”
from grade GROUP BY name

结果: 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章