Oracle把成績行的方式轉成列

2021-06-30 16:01:22 字數 2223 閱讀 2156

1、**中有如下資料 姓名

科目一月

二月三月

張三 語文

3040

50張三 

數學 56

6578

張三 英語

2886

48李四

語文31

4151

李四數學 

5766

79李四

英語29

8749

先要轉換成

姓名一月語文

二月語文

三月語文

一月數學

二月數學

三月數學

一月英語

二月英語

三月英語

李四31

4151

5766

7929

8749

張三30

4050

5665

7828

8648

2、建測試資料

create table grade_table(

stu_name varchar(20),

subject varchar(20),

month1 int default 0, --一月

month2 int default 0,--二月

month3 int default 0

);insert into grade_table(stu_name,subject,month1,month2,month3) values('張三','語文','30','40','50');

insert into grade_table(stu_name,subject,month1,month2,month3) values('張三','數學','56','65','78');

insert into grade_table(stu_name,subject,month1,month2,month3) values('張三','英語','28','86','48');

insert into grade_table(stu_name,subject,month1,month2,month3) values('李四','語文','31','41','51');

insert into grade_table(stu_name,subject,month1,month2,month3) values('李四','數學','57','66','79');

insert into grade_table(stu_name,subject,month1,month2,month3) values('李四','英語','29','87','49');

3、處理sql

select stu_name,sum(一月語文 ) 一月語文 ,sum(二月語文 ) 二月語文,sum(三月語文 ) 三月語文

,sum(一月數學 ) 一月數學 ,sum(二月數學 ) 二月數學,sum(三月數學 ) 三月數學

,sum(一月英語 ) 一月英語 ,sum(二月英語 ) 二月英語,sum(三月英語 ) 三月英語

from(

select stu_name,sum(case subject when '語文' then month1 end) as 一月語文

,sum(case subject when '語文' then month2 end) as 二月語文

,sum(case subject when '語文' then month3 end) as 三月語文

,sum(case subject when '數學' then month1 end) as 一月數學

,sum(case subject when '數學' then month2 end) as 二月數學

,sum(case subject when '數學' then month3 end) as 三月數學

,sum(case subject when '英語' then month1 end) as 一月英語

,sum(case subject when '英語' then month2 end) as 二月英語

,sum(case subject when '英語' then month3 end) as 三月英語

from grade_table

group by stu_name,subject

) group by stu_name --danielinbiti

Oracle把成績行的方式轉成列

1 中有如下資料 姓名科目 一月二月 三月張三 語文30 4050 張三 數學 5665 78張三 英語28 8648 李四語文 3141 51李四 數學 57 6679 李四英語 2987 49先要轉換成 姓名一月語文 二月語文 三月語文 一月數學 二月數學 三月數學 一月英語 二月英語 三月英語...

怎樣把資料庫的行轉成列

有如下格式的表 company name exchange listing countries business country byd otc pk usa chn byd szse chn chn byd xter gem chn byd hkse hk chn 怎麼樣轉成一列,後面帶listi...

把多行轉成一行 用空格分開

select t1.id as 銷售合同標識,t1.billno as 單據號,t1.orderno as 合同編號,select distinct salesorderno from salescompactorder where parentid t1.id for xml path 銷售訂單號...