oracle 行列转换

前端之家收集整理的这篇文章主要介绍了oracle 行列转换前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


一、建表与插入数据

1.1、建表

 1 create table kecheng
 2 (
 3   id     NUMBER, 4   name   VARCHAR2(20),128);line-height:1.5;font-family:'Courier New';font-size:12px;"> 5   course  6   score  NUMBER
 7 );
 8 insert into kecheng (id,name,course,score)
 9 values (1,'张三',0);line-height:1.5;font-family:'Courier New';font-size:12px;">语文6710 11 数学7612 13 英语4314 15 历史5616 17 化学1118 19 2,0);line-height:1.5;font-family:'Courier New';font-size:12px;">李四5420 21 8122 23 6424 25 9326 27 2728 29 3,0);line-height:1.5;font-family:'Courier New';font-size:12px;">王五2430 31 2532 33 834 35 4536 37 138 commit;

二、固定行列转换

2.1、Decode方式

SELECT ID,NAME,SUM(DECODE(course,score,0);line-height:1.5;font-family:'Courier New';font-size:12px;font-weight:bold;">0)) 语文,--这里使用max,min都可以
0)) 数学,0);line-height:1.5;font-family:'Courier New';font-size:12px;">)) 英语,0);line-height:1.5;font-family:'Courier New';font-size:12px;">)) 历史,0);line-height:1.5;font-family:'Courier New';font-size:12px;">)) 化学
FROMGROUP BY ID,NAME

2.2、Case方式

MAX(CASE WHEN course=' THEN score ELSE 0 END) 语文,0);line-height:1.5;font-family:'Courier New';font-size:12px;">) 数学,0);line-height:1.5;font-family:'Courier New';font-size:12px;">) 英语,0);line-height:1.5;font-family:'Courier New';font-size:12px;">) 历史,0);line-height:1.5;font-family:'Courier New';font-size:12px;">) 化学 结果与上方一样

2.3、wmsys.wm_concat行列转换函数

|| :'||score) course

2.4、使用over(partition by t.u_id)用法

NAME,128);line-height:1.5;font-family:'Courier New';font-size:12px;">||score) OVER (PARTITION BY NAME) FROM kecheng

三、动态转换

3.1、使用PL/sql

DECLARE 存放最终的sql LV_sql 3000); 存放连接的sql sql_COMMOND 定义游标 CURSOR CUR IS SELECT COURSE FROM KECHENG COURSE; BEGIN 定义查询开头 sql_COMMOND := SELECT NAME '; FOR I IN CUR LOOP 将结果相连接 sql_COMMOND := sql_COMMOND ''' || I.COURSE || '''' I.COURSE; DBMS_OUTPUT.PUT_LINE(sql_COMMOND); LOOP; sql_COMMOND : from KECHENG group by name; LV_sql :INSERT INTO temp_ss sql_COMMOND; DBMS_OUTPUT.PUT_LINE(LV_sql); EXECUTE IMMEDIATE LV_sql; END;
temp_ss 表

猜你在找的Oracle相关文章