mysql 按网上的方法进行汉字转全拼时,有些汉字统一转成zuo,请问下是什么原因导致的?
to_pinyin函数可能有问题
【相关推荐】
s_name | 数学 | 语文 | 英语 |
---|---|---|---|
张三 | 90 | 85 | 92 |
李四 | 88 | 91 | 99 |
李四 | 100 | 82 | 88 |
思路:
第一步可以将每一行根据学科s_sub分成数学,语文,英语三列 , sql语句:
case s_sub when '数学' then s_score else 0 end 数学
完整sql:
select s_name,
case s_sub when '数学' then s_score else 0 end 数学,
case s_sub when '语文' then s_score else 0 end 语文,
case s_sub when '英语' then s_score else 0 end 英语
from student_score
结果:
最后,需要按照s_name为维度group by聚合一下
select s_name,
sum(case s_sub when '数学' then s_score else 0 end) 数学,
sum(case s_sub when '语文' then s_score else 0 end) 语文,
max(case s_sub when '英语' then s_score else 0 end) 英语
from student_score group by s_name
最终结果:
如果不是int类型而是 varchar 那么上面是行不通的,因为sum里面不能跟字符串,需要用group_concat()函数替代sum,可先看多行转一行之后再看下方sql
select s_name,
GROUP_CONCAT(case s_sub when '数学' then CAST(s_score AS char) else null end) 数学,
GROUP_CONCAT(case s_sub when '语文' then CAST(s_score AS char) else null end) 语文,
GROUP_CONCAT(case s_sub when '英语' then CAST(s_score AS char) else null end) 英语
from student_score group by s_name