博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle 行列转置
阅读量:5955 次
发布时间:2019-06-19

本文共 799 字,大约阅读时间需要 2 分钟。

两种简单的行列转置


1、固定列数的行列转换
student   subject    grade
--------- ---------- --------
student1  语文       80
student1  数学       70
student1  英语       60
student2  语文       90
student2  数学       80
student2  英语       100
……
转换为
          语文      数学      英语
student1  80        70        60
student2  90        80        100
……
语句如下:
select student, 
       sum(decode(subject,'语文', grade,null)) "语文",
       sum(decode(subject,'数学', grade,null)) "数学",
       sum(decode(subject,'英语', grade,null)) "英语"
from table
group by student;

2、不定列行列转换

c1  c2
--- -----------
1   我
1   是
1   谁
2   知
2   道
3   不
……
转换为
1 我是谁
2 知道
3 不

这一类型的转换必须借助于PL/SQL来完成,这里给一个例子

CREATE OR REPLACE FUNCTION get_c2(tmp_c1 NUMBER)
    RETURN VARCHAR2
IS
    Col_c2 VARCHAR2(4000);
BEGIN
    FOR cur IN (SELECT c2 FROM t WHERE c1=tmp_c1) LOOP
        Col_c2 := Col_c2||cur.c2;
    END LOOP;
    Col_c2 := rtrim(Col_c2,1);
    RETURN Col_c2;
END;
/
SQL> select distinct c1 ,get_c2(c1) cc2 from table;

转载地址:http://fpexx.baihongyu.com/

你可能感兴趣的文章
oc的分类category
查看>>
网站前面的图标
查看>>
关于servlet
查看>>
nio buffer
查看>>
Linux2.6.32内核笔记(5)在应用程序中移植使用内核链表【转】
查看>>
CSS3 Flexbox 弹性布局
查看>>
(八)Hibernate的一对多关联关系
查看>>
Zookeeper与Kafka集群搭建
查看>>
关于【AC自动姬】的学习
查看>>
SQL Server 触发器 详细讲解
查看>>
第19章 可空值类型
查看>>
UWP Composition API - GroupListView(二)
查看>>
redis's usage
查看>>
openresty的安装和使用
查看>>
九、oracle 事务
查看>>
TDtree冲刺第四天
查看>>
SQL语法粗整理
查看>>
动态规划1
查看>>
工具使用-----Jmeter教程 简单的压力测试
查看>>
《Spring2之站立会议5》
查看>>