当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
Oracle认证考试辅导:在oracle中进行列行转换
发布时间:2010/3/31 18:12:53 来源:城市学习网 编辑:admin

  在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

广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved