搜索
写经验 领红包

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。

本文内容由小森整理编辑!