如何在oracle中进行列行转换


  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;

 

本文作者:



相关阅读:
网页背景渐变效果代码
linux中cpu的利用率获取方法
加强Win 2003系统安全性从四大方面入手
SmartHTTP 简易HttpRequest类(ASP)
CSS3 选择器 伪类选择器介绍
Extjs中常用表单介绍与应用
ASP 判断是否有中文的代码
创建预测查询
浅谈Windows Vista的硬件要求
维护Sql Server中表的索引
SSH整合中 hibernate托管给Spring得到SessionFactory
HTML的排版标记
HTML设置超链接字体颜色和点击后的字体颜色
渲染HTML5表单界面:CSS3 appearance
快速导航

Copyright © 2016 phpStudy | 皖ICP备18014864号-4