--建表
create table kecheng ( id NUMBER, name VARCHAR2(20), course VARCHAR2(20), score NUMBER );
--插入数据 insert into kecheng (id,name,course,score) values (1,‘张三‘,‘语文‘,67); insert into kecheng (id,‘数学‘,76); insert into kecheng (id,‘英语‘,43); insert into kecheng (id,‘历史‘,56); insert into kecheng (id,‘化学‘,11); insert into kecheng (id,score) values (2,‘李四‘,54); insert into kecheng (id,81); insert into kecheng (id,64); insert into kecheng (id,93); insert into kecheng (id,27); insert into kecheng (id,score) values (3,‘王五‘,24); insert into kecheng (id,25); insert into kecheng (id,8); insert into kecheng (id,45); insert into kecheng (id,1); commit;
select * from KECHENG t;
--2.1、Decode方式 SELECT ID,NAME, SUM(DECODE(course,score,0)) 语文,--这里使用max,min都可以 SUM(DECODE(course,0)) 数学,0)) 英语,0)) 历史,0)) 化学, sum(decode(course,‘地理‘,0)) 地理, sum(score) 总分 FROM kecheng GROUP BY ID,NAME

?
--2.2、Case方式 SELECT ID, MAX(CASE WHEN course=‘语文‘ THEN score ELSE 0 END) 语文, MAX(CASE WHEN course=‘数学‘ THEN score ELSE 0 END) 数学, MAX(CASE WHEN course=‘英语‘ THEN score ELSE 0 END) 英语, MAX(CASE WHEN course=‘历史‘ THEN score ELSE 0 END) 历史, MAX(CASE WHEN course=‘化学‘ THEN score ELSE 0 END) 化学, max(case when course=‘‘ then score else 0 end ) 无课,NAME

?
--结果与上方一样
--2.3、wmsys.wm_concat行列转换函数
SELECT ID, wmsys.wm_concat(course || ‘:‘||score) course FROM kecheng GROUP BY ID,NAME;

?
--2.4、使用over(partition by t.u_id)用法 SELECT NAME,max(r) from ( SELECT name,wmsys.wm_concat(course ||score) OVER (PARTITION BY NAME order by course) r FROM kecheng ) group by name

(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|