SQL查询实现行转列

 

1.  在scott用户下创建一张表test表的结构如下:

create table test(name varchar(10),subject varchar(10),score number)此表记录姓名,科目和成绩自动

2.   用sqlldr 导入如下数据:

 Name   subject   score

 Jack  ,  maths  ,  89

 Jack  ,  Chinese ,  90

 Jack  ,  English ,  78

 Sala  ,  maths ,  99

 Sala  ,  Chinese , 97

 Sala  ,  English , 87

构造一个a.txt文件存放上述数据,存放c:\a.txt

3.  写一个控制文件内容如下:

Control.ctl

LOAD DATA

INFILE 'c:\a.txt'

APPEND

INTO TABLE test

FIELDS TERMINATED BY "," TRAILING NULLCOLS

(

   name,subject,score

)

4.       用sqlldr把数据导入到数据库中

Sqlldr scott/tiger control=’c:\control.ctl’

查询表test显示如下:

SQL> select * from test;

NAME                 SUBJECT                   SCORE

-------------------- -------------------- ----------

Jack                 maths                        89

Jack                 Chinese                      90

Jack                 English                      78

Sala                 maths                        99

Sala                 Chinese                      97

Sala                 English                      87

已选择6行。

5.写一个查询语句把行转为列显示如下

Name  maths   Chinese  English

语句如下:

select name , sum(decode(subject,'maths',score,0)) as maths,sum(decode(subject,'Chinese',score,0)) as Chinese ,sum(decode(subject,'English',score,0)) as english from test group by name;

SQL> select name , sum(decode(subject,'maths',score,0)) as maths,sum(decode(subject,'Chinese',score,0)) as chine

se

  2  ,sum(decode(subject,'English',score,0)) as english from test group by name;

NAME                      MATHS    CHINESE    ENGLISH

-------------------- ---------- ---------- ----------

Jack                         89         90         78

Sala                         99         97         87

完成行列的操作

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值