第一部分:行轉列
1、新建一張表:
create table score(
id int not null,
name varchar2(10) not null,
subject varchar2(50) not null,
score int
);2、插入測試資料:
insert into score values(1,'張三','語文',80);
insert into score values(1,'張三','數學',85);
insert into score values(1,'張三','英語',90);
insert into score values(2,'lisi','語文',70);
insert into score values(2,'lisi','數學',55);
insert into score values(2,'lisi','英語',60);
insert into score values(3,'王五','語文',20);
insert into score values(3,'王五','數學',30);
insert into score values(3,'王五','英語',40);
3、列出資料如下:
4、轉換資料如下:
5、轉換方式一:
通過decode來轉換:
select id,name,
sum(decode(subject,'語文',score,null)) "語文",
sum(decode(subject,'數學',score,null)) "數學",
sum(decode(subject,'英語',score,null)) "英語"
from score group by id,name;
6、轉換方式二:
通過case when 表示式轉換:
select id,name,
sum(case when subject='語文' then score end) "語文",
sum(case when subject='數學' then score end) "數學",
sum(case when subject='英語' then score end) "英語"
from score group by id,name;
第二部分:列轉行:
1、建表語句:
create table scores(
id int primary key,
name varchar2(10) not null,
chinese int,
math int,
english int )
2、列出資料如下:
3、轉換出資料如下:
4、轉換方式:
a、集合查詢:
select id,name,'語文' course,chinese score from scores
union
select id,name,'數學' course,math score from scores
union
select id,name,'英語' course,english score from scores;
b、insert all方式:
create table scores_result(
id int,
name varchar2(10) not null,
course varchar2(10) not null,
score int
);insert all
into scores_result values(id,name,'語文',chinese)
into scores_result values(id,name,'數學',math)
into scores_result values(id,name,'英語',english)
select id,name,chinese,math,english from scores;
Oracle行列轉換
1.列轉行 create table t col row id int,c1 varchar2 10 c2 varchar2 10 c3 varchar2 10 insert into t col row values 1,v11 v21 v31 insert into t col row valu...
Oracle行列轉換
行轉列 select count over cnt,rn,str from select rownum rn,substr a.str,instr a.str,1,a.n 1,instr a.str,1,a.n 1 instr a.str,1,a.n 1 str from select a,b,c,...
oracle 行列轉換
q 如何實現行列轉換 a 1 固定列數的行列轉換 如student subject grade student1 語文 80 student1 數學 70 student1 英語 60 student2 語文 90 student2 數學 80 student2 英語 100 轉換為 語文 數學 英...