文档章节

oracle 行转列(用函数和游标完成)

陈爱茹cx1992
 陈爱茹cx1992
发布于 2016/07/26 17:34
字数 297
阅读 1
收藏 0
create table students
(student_id  varchar2(32),
student_name varchar2(180),
student_age number
)
insert into students values('1','金瑞','14');
insert into students values('2','中军','15');
insert into students values('3','于瑞','14');
insert into students values('4','快乐','14');
insert into students values('5','刘强','14');
insert into students values('6','红豆','14');
insert into students values('7','张明','14');
insert into students values('8','宿迁','14');
insert into students values('9','蓝蝶','14');
insert into students values('0','奇美','14');
-- 行转列 将多行数据转换为一列。例如学生表中将学生姓名串起来
create or replace
function getStudentNameString
  return varchar2 as
  begin
    declare cursor cu_student is
    select student_name from students order by student_id;
    student_name varchar2(180);
    rowString varchar2(1000);
    
    begin
      open cu_student;
      fetch cu_student into student_name;
      while cu_student%found loop
        rowString :=rowString || student_name || ',';
        fetch cu_student into student_name;
       end loop;
       return substr(rowString,1,length(rowString)-1);
      end;
     end getStudentNameString;
-- 测试
select getStudentNameString() from dual;
-- 代码说明
 declare cursor cu_student is select student_name from students order by student_id;
用于声明一个游标,该游标可用于循环获得数据表中所有学生姓名记录;

 fetch cu_student into student_name;
 用于将游标所指向的当前记录的数据赋值给student_name;
 
 while cu_student%found loop
   用于循环处理游标所指向的记录;
  
 rowString :=rowString || student_name || ',';
 用于将变量student_name的值添加到rowString的末尾。


本文转载自:http://blog.csdn.net/ruru7989/article/details/12316105

共有 人打赏支持
陈爱茹cx1992
粉丝 0
博文 59
码字总数 0
作品 0
济南
程序员
Java程序员的日常——存储过程知识普及

存储过程是保存可以接受或返回用户提供参数的SQL语句集合。在日常的使用中,经常会遇到复杂的业务逻辑和对数据库的操作,使用存储过程可以进行封装。可以在数据库中定义子程序,然后把子程序...

青夜之衫
2017/12/05
0
0
【书评:Oracle查询优化改写】第14章 结尾章

【书评:Oracle查询优化改写】第14章 结尾章 一.1 相关参考文章链接 前13章的链接参考相关连接: 【书评:Oracle查询优化改写】第一章 http://blog.itpub.net/26736162/viewspace-1652985/ 【书...

技术小胖子
2017/11/08
0
0
数据库设计及开发规范,sql性能优化

1 引言 1.1 编写目的 本文档用于规范数据库设计、开发等方面的内容。 1.2 预期读者 本文档的预期读者为本项目组全体成员,以及其他与项目有关的管理人员。 1.3 术语定义 OMP:Operation Man...

江影
04/02
0
0
oracle 分析函数

Oracle 行列转换函数 create table exam_record(id integer primary key,username varchar2(40),classtype varchar2(40),classname varchar2(200),score number(20,2));insert into exam_re......

guibawudi1985
2017/06/07
0
0
Oracle 行转列pivot 、列转行unpivot 的Sql语句总结

转自:http://blog.csdn.net/xiaokui_wingfly/article/details/42419207 多行转字符串 这个比较简单,用||或concat函数可以实现 实际上就是拆分字符串的问题,可以使用 substr、instr、regex...

Amui
2016/06/29
373
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Shell | linux安装包不用选择Y/N的方法

apt-get install -y packageOR echo "y" | sudo apt-get install package

云迹
3分钟前
0
0
Hadoop的大数据生态圈

基于Hadoop的大数据的产品圈 大数据产品的一句话概括 Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架...

zimingforever
18分钟前
1
0
八大包装类型的equals方法

先看其中一个源码 结论:八大包装类型的equals方法都是先判断类型是否相同,不相同则是false,相同则判断值是否相等 注意:包装类型不能直接用==来等值比较,否则编译报错,但是数值的基本类型...

xuklc
42分钟前
1
0
NoSQL , Memcached介绍

什么是NoSQL 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗...

TaoXu
昨天
0
0
890. Find and Replace Pattern - LeetCode

Question 890. Find and Replace Pattern Solution 题目大意:从字符串数组中找到类型匹配的如xyy,xxx 思路: 举例:words = ["abc","deq","mee","aqq","dkd","ccc"], pattern = "abb"abc ......

yysue
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部