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