Oracle把成績行的方式轉成列

2021-12-30 11:40:49 字數 2174 閱讀 7443

1、**中有如下資料

姓名科目

一月二月

三月張三

語文30

4050

張三 數學

5665

78張三

英語28

8648

李四語文

3141

51李四

數學 57

6679

李四英語

2987

49先要轉換成

姓名一月語文

二月語文

三月語文

一月數學

二月數學

三月數學

一月英語

二月英語

三月英語

李四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 中有如下資料 姓名 科目一月 二月三月 張三 語文 3040 50張三 數學 56 6578 張三 英語 2886 48李四 語文31 4151 李四數學 5766 79李四 英語29 8749 先要轉換成 姓名一月語文 二月語文 三月語文 一月數學 二月數學 三月數學 一月英語 二月英語 三月...

怎樣把資料庫的行轉成列

有如下格式的表 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 銷售訂單號...