ORALCE 行列互换实例说明

 
初始表tt:
 
SQL> select  * from tt;
 
STU        OBJECT     GRADE
---------- ---------- ----------
11         shuxue     90
12         shuxue     80
13         shuxue     80
14         shuxue     91
15         shuxue     71
11         yuwen      71
12         yuwen      81
13         yuwen      81
14         yuwen      88
15         yuwen      98
 
10 rows selected.
 
1.行-->列
 
SQL> select  stu,sum(decode(object,'shuxue',grade)) shuxue,
sum(decode(object,'yuwen',grade)) yumen from tt 
group by stu  order by stu ;
 
STU            SHUXUE      YUMEN
---------- ---------- ----------
11                 90         71
12                 80         81
13                 80         81
14                 91         88
15                 71         98
 
注:现在我们将结果保存为表dd,然后在将dd还原成tt的样子,就是列-->行。
 
2.列-->行
 
SQL> select  stu,'shuxue' object,shuxue grade from dd
  2  union all
  3  select stu,'yuwen' object,yuwen grade from dd ;
 
STU        OBJECT      GRADE
---------- ------ ----------
11         shuxue         90
12         shuxue         80
13         shuxue         80
14         shuxue         91
15         shuxue         71
11         yuwen          71
12         yuwen          81
13         yuwen          81
14         yuwen          88
15         yuwen          98
 
注释:这就是ORACLE中的行列转换。