静态语句实现行列转换

原创 2007年10月08日 10:48:00
 
方式一,学科有限并为已知情况下,可以使用一条sql语句实现。
表如下:
ID  NO   Name  Course  Score
1   001  赵      语文   80
2   001  赵      数学   40
3   001  赵      英语   60
4   002  李      语文   50
5   002  李      数学   30
6   003  唐      语文   20
Sql语句执行结果如下:
NO         Name         AllCouse                   总分
001         赵          语文,数学,英语            180
002         李          语文,数学                  80
003         唐          语文                        20
--建立测试环境
create table Score(
id integer,
no varchar(3),
name varchar2(10),
course varchar2(10),
score numeric(5,2)
);
 
--建立累加序列
create sequence seq_Score start with 1;
--插入测试数据
insert into Score values(seq_Score.Nextval ,'001','zhang','数学',20 );
insert into Score values(seq_Score.Nextval,'001','zhang','语文',20 );
insert into Score values(seq_Score.Nextval,'001','zhang','英语',20);
insert into Score values(seq_Score.Nextval,'002','zhao','语文',20 );
insert into Score values(seq_Score.Nextval,'002','zhao','英语',20 );
insert into Score values(seq_Score.Nextval,'003','li','数学',20 );
insert into Score values(seq_Score.Nextval,'003','li','英语',20 );
--查看当前数据表内容
select * from score;
 
select no,name, decode(语文,0,'','语文')||decode(数学,0,'','数学')||decode(英语,0,'','英语') 课程, 语文+数学+英语 总分
from
(select no,name,nvl(sum(decode(course,'语文',score,0)),0) 语文,
               nvl(sum(decode(course,'数学',score,0)),0) 数学,
               nvl(sum(decode(course,'英语',score,0)),0) 英语
from score
group by no,name) t
 

sql语句 静态sql和动态sql

使用动态SQL是在编写PL/SQL过程时经常使用的方法之一。很多情况下,比如根据业务的需要,如果输入不同查询条件,则生成不同的执行 SQL查询语句,对于这种情况需要使用动态SQL来完成。再比如,对于...
  • zy_281870667
  • zy_281870667
  • 2016年06月15日 16:45
  • 2477

[数据库] SQL查询语句表行列转换及一行数据转换成两列

本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两列数据的方法、子查询的应用、decode函数的用法。希望文章对你有所帮助~ 1.创建数据库表及插入数据 2.子查询统计不同...
  • Eastmount
  • Eastmount
  • 2016年01月22日 05:03
  • 15673

如何使用SQL语句将行和列进行转换

数据库是MSSQL2005.   第一部分主要的操作包含:数据库的创建、删除,表的增、删、改,表中数据的增、删、改、查,视图的操作。 --查询数据库是否存在 if exists ( se...
  • firefly_2002
  • firefly_2002
  • 2013年06月06日 15:12
  • 2849

通过SQL语句实现行列转换的几种方法

  • 2017年12月18日 16:15
  • 28KB
  • 下载

t-sql编程行列转换(静态和动态)

  • 2014年03月26日 09:12
  • 3KB
  • 下载

SQL语句实现对数据库查询结果的行列互换

  • 2010年12月27日 23:07
  • 2KB
  • 下载

【SQL精彩语句】普通行列转换(完整版)

/*标题:普通行列转换(version 2.0)作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)时间:2008-03-09地点:广东深圳说明:普通行列转换(version 1.0)仅针对sql s...
  • lf19820717
  • lf19820717
  • 2011年03月06日 16:14
  • 353

关于sql语句的一些操作 行列转换(转)

1. 行列转换--普通假设有张学生成绩表(CJ)如下Name Subject Result张三 语文 80张三 数学 90张三 物理 85李四 语文 85李四 数学 92李四 物理 82想变成 姓名 ...
  • ruiruiy
  • ruiruiy
  • 2011年04月18日 10:06
  • 305

SQL语句行列转换(附带数据库、表、视图操作)

本来只是想解决怎么把数据的行和列进行转换的,但最近觉得一些数据库SQL语句的操作,很久没用了,有点陌生。所以也就随笔记录一些简单但很基本的操作。 我的数据库是MSSQL2005. 第一部分主要的操...
  • beijing20110905
  • beijing20110905
  • 2016年07月07日 13:50
  • 217

SQL语句行列转换(附带数据库、表、视图操作)

本来只是想解决怎么把数据的行和列进行转换的,但最近觉得一些数据库SQL语句的操作,很久没用了,有点陌生。所以也就随笔记录一些简单但很基本的操作。 我的数据库是MSSQL2005. 第一部分...
  • q1512451239
  • q1512451239
  • 2016年11月12日 21:14
  • 180
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:静态语句实现行列转换
举报原因:
原因补充:

(最多只允许输入30个字)