sql中的行转列(sql行列转换简单的方法)
导语:SQL学习:实例说明SQL行转列用法,一看就懂超实用
在工作中,我们需要把SQL表中的数据查询出来转成列显示,下面我们以实例说明:
原始表:
想要的结果:
我们按照以下方法就可以实现,SQL语句如下:
select name 姓名,
max(case course when &39; then score else 0 end ) 语文,
max(case course when &39; then score else 0 end ) 数学,
max(case course when &39; then score else 0 end ) 英语,
sum(score) 总成绩
from student
group by name
输出结果如下:
GROUP BY 实例
select name 姓名,sum(score) 个人总分
from student
group by name
1、SQL编写注意事项
1.1 null 列
null 列使用索引是无意义的,任何包含null 值的列都不会包含在索引中。因此where 语句中的is null 或者 is not null 的语句,导致索引失效。
1.2 concat 或 ||
concate 或 || 是mysql 和 oracle 的字符串连接操作,如果对列进行函数操作,就会忽略索引的使用,比如下面的查询语句:
1.3 like
使用like进行模糊查询时,如果通配符%在首位则索引会失效;
1.4 order by
order by 子句中不要使用非索引列或嵌套表达式,这样都会导致性能降低。
1.5 使用 !=或<> 操作会使索引失效
1.7 where 和 having
select .. from .. on .. where .. group by .. having .. order by .. limit ..,以上是sql语句的语法结构,其中on、where和having是有过滤行为的,过滤行为越能提前完成就越可以减少传递给下一个阶段的数据量,因此如果在having中的过滤行为能够在where中完成,则应该优先考虑where来实现。
你学会了吗,关注我一起学SQL。
本文内容由小森整理编辑!