oracle中创建函数行变列,oracle decode 函数实现行转列
用decode函數(shù),或者case when實(shí)現(xiàn)行轉(zhuǎn)列 Oracle ----創(chuàng)建測(cè)試表create table student_score( name varchar2(20), subject varchar2(20), score number(4,1) ); -----插入測(cè)試數(shù)據(jù)insert into student_score (name,subject,score)values('張三','語(yǔ)文',78); in
用decode函數(shù),或者case when實(shí)現(xiàn)行轉(zhuǎn)列
Oracle
----創(chuàng)建測(cè)試表
create table student_score(
name varchar2(20),
subject varchar2(20),
score number(4,1)
);
-----插入測(cè)試數(shù)據(jù)
insert into student_score (name,subject,score)values('張三','語(yǔ)文',78);
insert into student_score (name,subject,score)values('張三','數(shù)學(xué)',88);
insert into student_score (name,subject,score)values('張三','英語(yǔ)',98);
insert into student_score (name,subject,score)values('李四','語(yǔ)文',89);
insert into student_score (name,subject,score)values('李四','數(shù)學(xué)',76);
insert into student_score (name,subject,score)values('李四','英語(yǔ)',90);
insert into student_score (name,subject,score)values('王五','語(yǔ)文',99);
insert into student_score (name,subject,score)values('王五','數(shù)學(xué)',66);
insert into student_score (name,subject,score)values('王五','英語(yǔ)',91);
-----decode行轉(zhuǎn)列
select name "姓名",
sum(decode(subject, '語(yǔ)文', nvl(score, 0), 0)) "語(yǔ)文",
sum(decode(subject, '數(shù)學(xué)', nvl(score, 0), 0)) "數(shù)學(xué)",
sum(decode(subject, '英語(yǔ)', nvl(score, 0), 0)) "英語(yǔ)"
from student_score
group by name;
------ case when 行轉(zhuǎn)列
select name "姓名",
sum(case when subject='語(yǔ)文'
then nvl(score,0)
else 0
end) "語(yǔ)文",
sum(case when subject='數(shù)學(xué)'
then nvl(score,0)
else 0
end) "數(shù)學(xué)",
sum(case when subject='英語(yǔ)'
then nvl(score,0)
else 0
end) "英語(yǔ)"
from student_score
group by name;
本文原創(chuàng)發(fā)布php中文網(wǎng),轉(zhuǎn)載請(qǐng)注明出處,感謝您的尊重!
總結(jié)
以上是生活随笔為你收集整理的oracle中创建函数行变列,oracle decode 函数实现行转列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 道琼斯指数下跌超900点 两万亿美元经
- 下一篇: 爱钱进理财到期取不出来