SQL 实现行转列
来源:互联网 发布:htc windows系统手机 编辑:程序博客网 时间:2024/06/08 03:20
1 、建表及插入数据
create table course( student_name nvarchar(20) not null, course_name nvarchar(20), score int )insert into course(student_name,course_name,score)values('张三','语文',89)insert into course(student_name,course_name,score)values('张三','数学',80)insert into course(student_name,course_name,score)values('张三','英语',90)insert into course(student_name,course_name,score)values('李四','语文',91)insert into course(student_name,course_name,score)values('李四','数学',92)insert into course(student_name,course_name,score)values('王五','数学',90)insert into course(student_name,course_name,score)values('王五','英语',95)
course表数据如下
现在想实现数据行转列,效果如下
姓名 语文 数学 英语
张三 89 80 90
李四 91 92
王五 90 95
2 、方法1:case when + sum()
select student_name,sum(case when course_name = '语文' then score when course_name = '数学' then 0 when course_name='英语' then 0 end) as '语文',sum(case when course_name = '语文' then 0 when course_name = '数学' then score when course_name='英语' then 0 end) as '数学',sum(case when course_name = '语文' then 0 when course_name = '数学' then 0 when course_name='英语' then score end) as '英语'from course group by student_name查询结果如下
此种方式下,不存在的课程用0表示。
3、方法2: 使用多表关联
select distinct c.student_name, c1.score as '语文',c2.score as '数学',c3.score as '英语'from course cleft join (select student_name, score from course where course_name ='语文') c1 on c.student_name = c1.student_nameleft join (select student_name, score from course where course_name ='数学') c2 on c.student_name = c2.student_nameleft join (select student_name, score from course where course_name ='英语') c3 on c.student_name = c3.student_name结果如下
此种方式下,不存在的课程用null表示。
阅读全文
0 0
- SQL查询实现行转列
- SQL实现行转列
- MySQL 实现行转列SQL
- SQL 实现行转列
- LINQ TO SQL 实现行转列
- Oracle 动态SQL实现SQL查询子集行转列
- Sql Server 2005 行转列的实现
- SQL Server 行转列的实现(横排)
- SQL Server 行转列的实现(横排)
- SQL Server 实现 行转列、列转行
- SQL Server 行转列的实现(横排)
- sql多方法实现行转列demo
- SQL server使用pivot函数实现行转列
- SQL 行转列查询的简易实现
- sql随机实现,sql GUID
- sql实现搜索功能
- 编程实现连接sql
- php+SQL实现分页
- java入门学习01
- 谷歌电子市场开发记录(2)-框架搭建
- Spring中整合mybatis
- nodejs http simple demo
- 使用反射遍历类的属性
- SQL 实现行转列
- 括号匹配
- mysql实现sql记录
- UIVIEW切任意角
- python3使用builtwith 出错的最简单处理方法
- CentOS7下安装MySQL5.7安装与配置(YUM)
- HDU
- java多线程
- 在Tensorflow环境下利用梯度下降法进行线性回归