orcl 行转列的存储过程
CREATE or replace PROCEDURE sp_fixWage AUTHID CURRENT_USER as
--此处需要注意的 authid current_user 这个属性 详细请查看 上篇博文:http://www.cnblogs.com/Strive-fighting/p/3769042.html
v_sql varchar2(4000); --定义拼接的sql字符串
cursor cursor_1 is select distinct v.fieldvalue from v_userFixWage v ;
--定义游标 :需要转换成列的那一行字段值
begin
v_sql :='select user_id,year,month ';
for v_user in cursor_1
loop
v_sql :=v_sql || ',' || 'SUM(DECODE(fieldvalue,''' || v_user.fieldvalue ||
''',value,0)) AS ' || v_user.fieldvalue;
end loop;
--循环游标拼接sql字符串
v_sql :=v_sql || ' from v_userFixWage group by user_id,year,month order by user_id,year,month';
v_sql :='create or replace view v_fixwageResult as ' || v_sql;
EXECUTE IMMEDIATE v_sql;
--创建视图
END ;
-----------=====以上是创建存储过程的语句====---
begin
sp_fixWage();
end ;
-----===========以上三句是执行存储过程----------
select * from v_fixwageResult;
---------查询新创建的视图语句---------
以下是截图:
转换前:
转换后如下图所示:
若有不表达不清楚的地方欢迎 留言 提问,不足的地方请大家多多指教
orcl 行转列的存储过程的更多相关文章
- mysql 行转列(存储过程)
直接sql(自己抽离代码,无法和order by rand() 复用): select shit from( select 要累加的字段, @tt:=CONCAT(@tt,',',a.要累加的字段) ...
- Oracle 行转列pivot 、列转行unpivot 的Sql语句总结
这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str from ap ...
- 中等难度SQL语句(存储过程,分页,拼接字段、游标,日期类型转换,动态行转列,视图)汇总
一.创建存储过程 if Exists(select name from sysobjects where NAME = 'sp1LoginUser' and type='P')drop procedu ...
- MySql 行转列 存储过程实现
同学们在使用mysql的过程中,会遇到一个行转列的问题,就是把多条数据转化成一条数据 用多列显示. 方法1. 实现方式用下面的存储过程,表名对应的修改就行. BEGIN declare current ...
- 【转】MySQL存储过程中使用动态行转列
MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...
- MySQL存储过程的动态行转列
MySQL存储过程中使用动态行转列 最近做项目关于数据报表处理,然而数据库存储格式和报表展现形式不同,需要进行一下行转列的操作,在做上一个项目的时候也看了一下,但是后来换了读取方式,也就没深入研究这个 ...
- 做图表统计你需要掌握SQL Server 行转列和列转行
说在前面 做一个数据统计和分析的项目,每天面对着各种数据,经过存储过程从源表计算汇总后需要写入中间结果表以提高数据使用效率,那么此时就需要用到行转列和列转行. 1.列转行 数据经过计算加工后会直接生成 ...
- SQL Server 行转列重温
转载自http://www.cnblogs.com/kerrycode/ 行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER ...
- (转载)重温SQL——行转列,列转行
原文地址:http://www.cnblogs.com/kerrycode/archive/2010/07/28/1786547.html 行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通 ...
随机推荐
- C#代码设置窗体和Panel的位置大小
1.设置Panel位置大小 private void button2_Click(object sender, EventArgs e) { panel1.Visible = false; panel ...
- DataTables在回调方法中使用api
$(document).ready(function() { $('#example').dataTable( { "initComplete": function () { va ...
- sql server高效分页控件及c#调用实例
第一.首先在sqlserver中创建一个存储过程 USE [BZY] GO /****** 对象: StoredProcedure [dbo].[up_ProcCustomPage2005_New] ...
- IOS面试问题总结
IOS面试问题总结 分类: IOS开发2013-11-20 17:26 10458人阅读 评论(1) 收藏 举报 目录(?)[+] 通过网络搜寻和自己总结经历找了一些IOS面试经常被问道的问题 ...
- redhat 5下源码安装nginx服务
首先确保机器中已安装 gcc c++,libtool等工具,保证可执行源码安装 A.为了确保能在 Nginx 中使用正则表达式进行更灵活的配置,安装之前需要确定系统是否安装有 PCRE(Perl Co ...
- Android 代码编辑器中实现代码语法高亮
想写一款Android手机上的代码编辑器,实现类似c4droid中代码语法高亮 通过Android中的控件WebView中嵌入html网页,html引入CodeMirror这个第三方库就可以了,其实就 ...
- yii CMenu的配置(导航栏)
给主键的li 和a标签添加元素$this->myMenu = array( 'id'=>'myMenu', 'items'=>array( array( 'label'=>'H ...
- hdu Game of Connections
卡特兰数 递推公式:h(n)=h(n-1)*(4*n-2)/(n+1); import java.math.BigInteger; import java.util.Scanner; public c ...
- hdu 六度分离
http://acm.hdu.edu.cn/showproblem.php?pid=1869 #include <cstdio> #include <cstring> #inc ...
- Qt判断和打开进程(windows端),运行,检测,中止
windows端的Qt程序往往需要打开外部程序(如:prog.exe),并且需要确定这个外部程序是唯一打开的. 1.判断系统中是否存在prog.exe void judge() { QProcess ...