Heim  >  Artikel  >  Datenbank  >  oracle decode 函数实现行转列

oracle decode 函数实现行转列

WBOY
WBOYOriginal
2016-06-07 14:55:191351Durchsuche

用decode函数,或者case when实现行转列 Oracle ----创建测试表create table student_score( name varchar2(20), subject varchar2(20), score number(4,1) ); -----插入测试数据insert into student_score (name,subject,score)values('张三','语文',78); in

用decode函数,或者case when实现行转列
Oracle
----创建测试表

create table student_score(

       name varchar2(20),

       subject varchar2(20),

       score number(4,1)

 

);

 

-----插入测试数据

insert into student_score (name,subject,score)values('张三','语文',78);

 

insert into student_score (name,subject,score)values('张三','数学',88);

 

insert into student_score (name,subject,score)values('张三','英语',98);

 

 

insert into student_score (name,subject,score)values('李四','语文',89);

 

insert into student_score (name,subject,score)values('李四','数学',76);

 

insert into student_score (name,subject,score)values('李四','英语',90);

 

 

insert into student_score (name,subject,score)values('王五','语文',99);

 

insert into student_score (name,subject,score)values('王五','数学',66);

 

insert into student_score (name,subject,score)values('王五','英语',91);

 

-----decode行转列

select name "姓名",

       sum(decode(subject, '语文', nvl(score, 0), 0)) "语文",

       sum(decode(subject, '数学', nvl(score, 0), 0)) "数学",

       sum(decode(subject, '英语', nvl(score, 0), 0)) "英语"

  from student_score

 group by name;

 

------ case when 行转列

 

select name "姓名",

       sum(case when subject='语文'

       then nvl(score,0)

       else 0

       end) "语文",

       sum(case when subject='数学'

       then nvl(score,0)

       else 0

       end) "数学",

       sum(case when subject='英语'

       then nvl(score,0)

       else 0

       end) "英语"

      from student_score

       group by name;
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:ORACLE字符拆分函數返回結果集Nächster Artikel:最小公倍数