热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle报表返回,Oracle查询存储过程做横向报表的方法

CREATEORREPLACEPACKAGEBODYCHEN_TEST_PACKGEIS**********************************************

CREATE OR REPLACE PACKAGE BODY CHEN_TEST_PACKGE IS

/************************************************************************************/

/* 功能说明:查询某种公告报表 */

/* 参数说明: */

/* i_id_capital_dynamic_manage IN VARCHAR2 某种公告ID */

/* o_cursor OUT bulletin_report_type 返回游标 */

/* */

/* 创建日期 姓名 */

/* 2013-03-08 路人甲 */

/************************************************************************************/

PROCEDURE p_list_bulletin_report( i_id_capital_dynamic_manage IN VARCHAR2,

o_cursor OUT bulletin_report_type)

AS

set_id_bulletin_report_temp VARCHAR2(50); -- 定义临时变量

BEGIN

begin

--给临时变量赋值

--select to_char(sysdate,'yyyymmddhh24missSSS') into set_id_bulletin_report_temp from dual;

select i_id_capital_dynamic_manage into set_id_bulletin_report_temp from dual;

--获取数据插入临时表

insert into scms_bulletin_report_temp

(

id_bulletin_report_temp,

biz_Name,

t01,

t07,

t14,

t21,

t1M,

t2M,

t3M,

t4M,

t5M,

t6M,

t1Y,

t2Y,

tCount,

sort_no

)

select c.*,

rownum as sort_no

from(

select

set_id_bulletin_report_temp as id_bulletin_report_temp,

scms_common_packge.get_biz_name(b.biz_id) as biz_Name,

max(case when b.term_type='T01' then b.c else 0 end) as T01,

max(case when b.term_type='T07' then b.c else 0 end) as T07,

max(case when b.term_type='T14' then b.c else 0 end) as T14,

max(case when b.term_type='T21' then b.c else 0 end) as T21,

max(case when b.term_type='T1M' then b.c else 0 end) as T1M,

max(case when b.term_type='T2M' then b.c else 0 end) as T2M,

max(case when b.term_type='T3M' then b.c else 0 end) as T3M,

max(case when b.term_type='T4M' then b.c else 0 end) as T4M,

max(case when b.term_type='T5M' then b.c else 0 end) as T5M,

max(case when b.term_type='T6M' then b.c else 0 end) as T6M,

max(case when b.term_type='T1Y' then b.c else 0 end) as T1Y,

max(case when b.term_type='T2Y' then b.c else 0 end) as T2Y,

sum(b.c) as BIZ_ID_COUNT

from

(

select a.term_type,a.biz_id,sum(a.capital_claim) c

from (select report.capital_claim,

report.biz_id,

detail.term_type

from scms_capital_claim_report report,

scms_capital_assign_detail detail,

scms_capital_dynamic_manage manager

where manager.id_capital_dynamic_manage = detail.id_capital_dynamic_manage

and report.id_capital_assign_detail = detail.id_capital_assign_detail

and detail.id_capital_dynamic_manage = i_id_capital_dynamic_manage

and manager.IS_SETTLEMENT = '1'

and manager.IS_CONFIRM = '1'

) a

group by a.term_type,a.biz_id

) b group by b.biz_id

) c; -- 插入总记录数

insert into scms_bulletin_report_temp

(

id_bulletin_report_temp,

(select max(sort_no)+1 from scms_bulletin_report_temp te where te.id_bulletin_report_temp = set_id_bulletin_report_temp ) as sort_no

from(

select

set_id_bulletin_report_temp as id_bulletin_report_temp,

'总计(天数)' as biz_Name,'biz_id_count' as biz_id,

scms_capital_dynamic_manage manager

where manager.id_capital_dynamic_manage = detail.id_capital_dynamic_manage

and report.id_capital_assign_detail = detail.id_capital_assign_detail

and detail.id_capital_dynamic_manage = i_id_capital_dynamic_manage

and manager.IS_SETTLEMENT = '1'

and manager.IS_CONFIRM = '1'

) a

group by a.term_type

) b group by b.biz_id

) c;

-- 查询刚刚插入的表记录

open o_cursor for

select

id_bulletin_report_temp as idBulletinReportTemp,

biz_Name as bizName,

t01 as t01,

t07 as t07,

t14 as t14,

t21 as t21,

t1M as t1M,

t2M as t2M,

t3M as t3M,

t4M as t4M,

t5M as t5M,

t6M as t6M,

t1Y as t1Y,

t2Y as t2Y,

tCount as tCount,

sort_no as sortNo

from scms_bulletin_report_temp temp

where temp.id_bulletin_report_temp = set_id_bulletin_report_temp

order by sortNo asc;

-- 删除:根据ID删除刚刚插入的记录

delete from scms_bulletin_report_temp temp where temp.id_bulletin_report_temp = set_id_bulletin_report_temp;

commit;

end;

END p_list_bulletin_report;

END CHEN_TEST_PACKGE;

/



推荐阅读
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
author-avatar
牛涛fd_501
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有