将数据库中的纵向排列数据改写成横向排列数据
2017-08-22 19:09
411 查看
编写一条sql语句将表1(stuScore)中的纵向排列数据改写成表2
表1(stuScore):
表2:
stuScore建表语句:
--创建表格
create table stuScore(
id number(6),
stuName varchar2(50),
courseName varchar2(50),
score number(6,1),
primary key(id)
);
--插入数据
insert into stuScore (Id, Stuname, Coursename, Score)
values (1, '大李', '语文', 99.5);
insert into stuScore (Id, Stuname, Coursename, Score)
values (2, '大李', '数学', 79.5);
insert into stuScore (Id, Stuname, Coursename, Score)
values (3, '大李', '英语', 49.5);
insert into stuScore (Id, Stuname, Coursename, Score)
values (4, '小王', '语文', 89.5);
insert into stuScore (Id, Stuname, Coursename, Score)
values (5, '小王', '数学', 69.5);
insert into stuScore (Id, Stuname, Coursename, Score)
values (6, '小王', '英语', 59.5);
commit;
查询语句:
写法1:
select stuName,
sum(decode(courseName,'语文',score,null)) as chineseScore,
sum(decode(courseName,'数学',score,null)) as mathScore,
sum(decode(courseName,'英语',score,null)) as englishScore
from stuScore group by stuName;
写法2:
select stuName,
sum(case courseName when '语文' then score end) as chineseScore,
sum(case courseName when '数学' then score end) as mathScore,
sum(case courseName when '英语' then score end) as englishScore
from stuScore group by stuName;
表1(stuScore):
id | stuName | courseName | score |
1 | 大李 | 语文 | 99.5 |
2 | 大李 | 数学 | 79.5 |
3 | 大李 | 英语 | 49.5 |
4 | 小李 | 语文 | 89.5 |
5 | 小李 | 数学 | 69.5 |
6 | 小李 | 英语 | 59.5 |
id | stuName | chineseScore | mathScore | englishScore |
1 | 大李 | 99.5 | 79.5 | 49.5 |
2 | 小王 | 89.5 | 69.5 | 59.5 |
--创建表格
create table stuScore(
id number(6),
stuName varchar2(50),
courseName varchar2(50),
score number(6,1),
primary key(id)
);
--插入数据
insert into stuScore (Id, Stuname, Coursename, Score)
values (1, '大李', '语文', 99.5);
insert into stuScore (Id, Stuname, Coursename, Score)
values (2, '大李', '数学', 79.5);
insert into stuScore (Id, Stuname, Coursename, Score)
values (3, '大李', '英语', 49.5);
insert into stuScore (Id, Stuname, Coursename, Score)
values (4, '小王', '语文', 89.5);
insert into stuScore (Id, Stuname, Coursename, Score)
values (5, '小王', '数学', 69.5);
insert into stuScore (Id, Stuname, Coursename, Score)
values (6, '小王', '英语', 59.5);
commit;
查询语句:
写法1:
select stuName,
sum(decode(courseName,'语文',score,null)) as chineseScore,
sum(decode(courseName,'数学',score,null)) as mathScore,
sum(decode(courseName,'英语',score,null)) as englishScore
from stuScore group by stuName;
写法2:
select stuName,
sum(case courseName when '语文' then score end) as chineseScore,
sum(case courseName when '数学' then score end) as mathScore,
sum(case courseName when '英语' then score end) as englishScore
from stuScore group by stuName;
相关文章推荐
- [数据库] Oracle单表查询总数及百分比和数据横向纵向连接
- 数据库表的转置,横向显示数据,并绑定到gridview
- SQL 查询结果的纵向变横向排列
- 向datagrid中加横向 纵向的合计 (在datatable中实现,datatable间倒数据)
- Asp.Net 网站优化系列 数据库优化 分字诀 分表(纵向拆分,横向分区)
- repeater横向排列数据
- 数据库同一张表字段横向与纵向相加
- R语言中的横向数据合并merge及纵向数据合并rbind的使用
- 提高系统性能数据库设计的横向分割和纵向分割技术
- Android的Menu的横向纵向排列问题
- DataList横向排列数据如何实现交替行变色!
- [MSSQL]SQL 查询结果的纵向变横向排列
- 将多条数据以横向排列生成报表
- 数据库中的横向设计与纵向设计
- 提高性能的数据库纵向分割和横向分割
- SQL,纵向数据变为横向显示。
- [MSSQL]SQL 查询结果的纵向变横向排列
- SQL 查询结果的纵向变横向排列
- MySQL交叉表:纵向数据显示为横向
- Oracle之纵向数据转换横向数据