欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle 查詢存儲過程做橫向報表的方法

 更新時間:2013年03月26日 09:44:27   作者:  
Oracle 查詢存儲過程做橫向報表的方法,需要的朋友可以參考一下

因為要牽扯到小計,所以需要計算兩次。

想法:

1、把查詢到的結(jié)果,插入到臨時表,

2、把統(tǒng)計結(jié)果插入到臨時表。

3、查詢臨時表記錄放置到游標(biāo)中。

4、刪除臨時表記錄。

包的定義聲明:

復(fù)制代碼 代碼如下:

CREATE OR REPLACE PACKAGE CHEN_TEST_PACKGE IS
type cursor_type is ref cursor;

 

 /************************************************************************************/
 /*  功能說明:查詢某種公告報表                                                      */
 /*  參數(shù)說明:                                                                      */
 /*         i_id_capital_dynamic_manage IN   VARCHAR2          某種公告ID            */
 /*         o_cursor                  OUT  cursor_type       返回游標(biāo)                */
 /*                                                                                  */
 /*  創(chuàng)建日期         姓名                                                           */
 /*  2013-03-08       路人甲                                                         */
 /************************************************************************************/

PROCEDURE p_list_bulletin_report(  i_id_capital_dynamic_manage       IN       VARCHAR2,
                                   o_cursor                 OUT      cursor_type);

END CHEN_TEST_PACKGE;

包的實現(xiàn):

復(fù)制代碼 代碼如下:


CREATE OR REPLACE PACKAGE BODY CHEN_TEST_PACKGE IS

/************************************************************************************/
 /*  功能說明:查詢某種公告報表                                                      */
 /*  參數(shù)說明:                                                                      */
 /*         i_id_capital_dynamic_manage IN   VARCHAR2          某種公告ID            */
 /*         o_cursor                  OUT  bulletin_report_type       返回游標(biāo)       */
 /*                                                                                  */
 /*  創(chuàng)建日期         姓名                                                           */
 /*  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;     
      --獲取數(shù)據(jù)插入臨時表
        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;

    -- 插入總記錄數(shù)
        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.*,
    (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,
            '總計(天數(shù))' 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,'biz_id_count' as 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
        ) 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;
    -- 刪除:根據(jù)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;
/


頁面調(diào)用ibatis的xml配置查詢結(jié)果:

復(fù)制代碼 代碼如下:

<!-- 某種公告報表查詢 結(jié)果集 class="java.util.HashMap"-->
     <resultMap id="bulletinReportResultMap" class="java.util.TreeMap">
        <result property="bizId" column="bizId"/>
        <result property="bizName" column="bizName"/>
        <result property="t01" column="t01"/>
        <result property="t07" column="t07"/>
        <result property="t14" column="t14"/>
        <result property="t21" column="t21"/>
        <result property="t1M" column="t1M"/>
        <result property="t2M" column="t2M"/>
        <result property="t3M" column="t3M"/>
        <result property="t4M" column="t4M"/>
        <result property="t5M" column="t5M"/>
        <result property="t6M" column="t6M"/>
        <result property="t1Y" column="t1Y"/>
        <result property="t2Y" column="t2Y"/>
        <result property="tCount" column="tCount"/>
        <result property="sortNo" column="sortNo"/>
    </resultMap>
    <!-- 某種公告報表查詢 參數(shù) -->   
    <parameterMap id="bulletinReportParamMap" class="java.util.Map">
         <parameter property="i_id_capital_dynamic_manage" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN" />
         <parameter property="o_cursor" javaType="java.sql.ResultSet" jdbcType="ORACLECURSOR" mode="OUT" />
     </parameterMap>    
    <!-- 某種公告報表查詢 調(diào)用存儲過程 -->
     <procedure id="queryBulletinReportList" resultMap="bulletinReportResultMap" parameterMap="bulletinReportParamMap">
        {call CHEN_TEST_PACKGE.p_list_bulletin_report(?,?)}
    </procedure>

java調(diào)用:

復(fù)制代碼 代碼如下:

String id_capital_dynamic_manage = request.getParameter("id_capital_dynamic_manage");
            Map<String, Object> paraMap = new HashMap<String, Object>();
            paraMap.put("i_id_capital_dynamic_manage", id_capital_dynamic_manage);
            // 調(diào)用存儲過程,查詢
            List resultList = (List<?>) CURDUtil.queryList("queryBulletinReportList", paraMap);

頁面顯示jsp:

復(fù)制代碼 代碼如下:

<c:if test="${not empty msgList}">
                  <c:forEach items="${msgList}" var="item">
                  <tr align="center" >
                    <td nowrap class="td_3"  ><c:out value="${item.bizName}"/></td>
                    <td nowrap class="td_3"  ><fmt:formatNumber pattern="#,##0.00" value="${item.t01}"/></td>
                    <td nowrap class="td_3"  ><fmt:formatNumber pattern="#,##0.00" value="${item.t07}"/></td>
                    <td nowrap class="td_3"  ><fmt:formatNumber pattern="#,##0.00" value="${item.t14}"/></td>
                    <td nowrap class="td_3"  ><fmt:formatNumber pattern="#,##0.00" value="${item.t21}"/></td>
                    <td nowrap class="td_3"  ><fmt:formatNumber pattern="#,##0.00" value="${item.t1M}"/></td>
                    <td nowrap class="td_3"  ><fmt:formatNumber pattern="#,##0.00" value="${item.t2M}"/></td>
                    <td nowrap class="td_3"  ><fmt:formatNumber pattern="#,##0.00" value="${item.t3M}"/></td>
                    <td nowrap class="td_3"  ><fmt:formatNumber pattern="#,##0.00" value="${item.tCount}"/></td>
                  </tr>
                  </c:forEach>
              </c:if>

相關(guān)文章

  • 有關(guān)Oracle數(shù)據(jù)庫的備份情況

    有關(guān)Oracle數(shù)據(jù)庫的備份情況

    有關(guān)Oracle數(shù)據(jù)庫的備份情況...
    2007-03-03
  • Oracle 分區(qū)索引介紹和實例演示

    Oracle 分區(qū)索引介紹和實例演示

    這篇文章主要介紹了Oracle 分區(qū)索引介紹和實例演示,分區(qū)索引(或索引分區(qū))主要是針對分區(qū)表而言的,本文主要描述了分區(qū)索引的相關(guān)特性并給出演示示例,需要的朋友可以參考下
    2014-09-09
  • Oracle數(shù)據(jù)庫中的控制文件管理以及常用參數(shù)設(shè)置

    Oracle數(shù)據(jù)庫中的控制文件管理以及常用參數(shù)設(shè)置

    這篇文章主要介紹了Oracle數(shù)據(jù)庫中的控制文件管理以及常用參數(shù)設(shè)置方法,包括控制文件不一致問題的解決方法以及隱藏參數(shù)等技巧,需要的朋友可以參考下
    2015-12-12
  • oracle列合并的實現(xiàn)方法

    oracle列合并的實現(xiàn)方法

    這篇文章主要介紹了oracle列合并的實現(xiàn)方法,需要的朋友可以參考下
    2014-07-07
  • Oracle中的table()函數(shù)使用

    Oracle中的table()函數(shù)使用

    這篇文章主要介紹了Oracle中的table()函數(shù)的使用,提高查詢效率,利用table()函數(shù),可接收輸入?yún)?shù),然后將pl/sql?返回的結(jié)果集代替table,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Oracle?數(shù)據(jù)庫層級遍歷查詢功能的實現(xiàn)

    Oracle?數(shù)據(jù)庫層級遍歷查詢功能的實現(xiàn)

    這篇文章主要介紹了Oracle?數(shù)據(jù)庫層級遍歷查詢,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • oracle 11g RAC 常用命令整理分享

    oracle 11g RAC 常用命令整理分享

    很多朋友會經(jīng)常用到oracle 11g RAC的命令,今天我也用到了,同時也整理了一些常用的命令,以備不時之需
    2012-11-11
  • 解決maven不能下載oracle jdbc驅(qū)動的問題

    解決maven不能下載oracle jdbc驅(qū)動的問題

    這篇文章主要介紹了解決maven不能下載oracle jdbc驅(qū)動的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • [Oracle] RAC 之 - 負(fù)載均衡深入解析

    [Oracle] RAC 之 - 負(fù)載均衡深入解析

    負(fù)載均衡是指把負(fù)載平均分配到集群中的各個節(jié)點,從而提高整體性能。Oracle RAC提供兩種方式實現(xiàn)負(fù)載均衡,以下就為大家詳細(xì)介紹一下,需要的朋友可以參考下
    2013-07-07
  • Oracle數(shù)據(jù)庫數(shù)據(jù)丟失恢復(fù)的幾種方法總結(jié)

    Oracle數(shù)據(jù)庫數(shù)據(jù)丟失恢復(fù)的幾種方法總結(jié)

    相信大家無論是開發(fā)、測試還是運維過程中,都可能會因為誤操作、連錯數(shù)據(jù)庫、用錯用戶、語句條件有誤等原因,導(dǎo)致錯誤刪除、錯誤更新等問題。當(dāng)你捶胸頓足或嚇得腿軟時,肯定希望有辦法來恢復(fù)這些數(shù)據(jù)。oracle就提供了一些強大的方法或機制,可以幫到有需要的你。
    2016-12-12

最新評論