`
oboaix
  • 浏览: 275724 次
社区版块
存档分类
最新评论

oracle的报表的典型sql语句

阅读更多
实现SQL语句

Select LEAD(m.app_no,(Select Count(1) From app_mtfeature Where app_no='04')-1,'')
  over(Order By m.app_no) appno,
  m.feature_seq||'' feature_seq,m.month||'' month,m.pointfee,m.discount
  From app_mtfeature m Where m.app_no='04'
Union All
  Select '','合计','',Sum(pointfee),Sum(discount) From app_mtfeature Where app_no='04'
Union All
  Select LEAD(m.app_no,(Select Count(1) From app_mtfeature Where app_no='06')-1,'')
  over(Order By m.app_no) appno,
   m.feature_seq||'',m.month||'',m.pointfee,m.discount
   From app_mtfeature m Where m.app_no='06'
Union All
  Select '','合计','',Sum(pointfee),Sum(discount) From app_mtfeature Where app_no='06'

zxbxiaobo@sina.com pwd:xiaobo
看看首项,第二项效果怎么样!
[/color]

[color=olive]创建包,包体,使用存储过程 返回游标集合

CREATE OR REPLACE PACKAGE Acc_Card1  ---创建一包
  As
    Type Acc_Card_cursor Is Ref Cursor;
    Procedure transact_data_query1(p_cursor Out Acc_Card_cursor,v_merchant_no varchar2,v_point_no varchar2,v_terminal_no varchar2,v_card_type varchar2,v_account_date1 date,v_account_date2 date,v_transact_time1 date,v_transact_time2 date,v_card_logical_number varchar2,v_card_face_no varchar2);
END Acc_Card1;

CREATE OR REPLACE Package Body Acc_Card1 As  --创建一包体
Procedure transact_data_query1(p_cursor Out Acc_Card_cursor,v_merchant_no varchar2,v_point_no varchar2,v_terminal_no varchar2,v_card_type varchar2,v_account_date1 date,v_account_date2 date,v_transact_time1 date,v_transact_time2 date,v_card_logical_number varchar2,v_card_face_no varchar2) Is
Begin
Open p_Cursor For
Select
to_char(v1.TRANSACT_TIME-4/24,'yyyy-mm-dd') as transact_date
,v1.merchant_no as merchant_no
,substr(v1.POINT_NO,0,2) point_no
,substr(v1.POINT_NO,3,2)  terminal_no
,v1.psam_no,v1.card_type,v1.card_type_name,v1.card_face_no,v1.card_logical_number,v1.tran_merchant_name,v1.tran_merchant_no,
v1.app_no,v1.transact_name,v1.transact_type,v1.mid_transact_value,v1.mid_voucher_value,v1.transact_time,v1.account_date,v1.customer_id
From v_card_tran_query v1
where
('-1'=v_card_face_no or card_face_no=v_card_face_no)
and  ('-1'=v_card_logical_number or card_logical_number=v_card_logical_number)     
and  ('-1'=v_merchant_no or merchant_no=v_merchant_no)
and  ('-1'=v_point_no or substr(v1.POINT_NO,0,2)=v_point_no)
and  ('-1'=v_terminal_no or substr(v1.POINT_NO,3,2)=v_terminal_no)
and  ('-1'=v_card_type or card_type=v_card_type)
and v1.account_date between v_account_date1 and v_account_date2
and v1.transact_time between v_transact_time1 and v_transact_time2
and
(  v1.partition_field='00'    or
exists
   (
      select * from sys_partition a where
      a.start_date between  v_account_date1 and v_account_date2
      or a.end_date between  v_account_date1 and v_account_date2
      or v_account_date1 between a.start_date and a.end_date
      or v_account_date2 between a.start_date and a.end_date
   )
)
  union all
  select 
  decode(grouping(transact_date),1,' 合計',transact_date) as transact_date
  ,decode(grouping(merchant_no),1,decode(grouping(transact_date),1,'','小計'),merchant_no) as merchant_no
  ,decode(grouping(point_no),1,decode(grouping(merchant_no),1,'','小計'),point_no) as point_no
  ,decode(grouping(terminal_no),1,decode(grouping(point_no),1,'','小計'),terminal_no) as terminal_no
  ,null as psam_no,null as card_type,null as card_type_name,null as card_face_no,null as card_logical_number,null as tran_merchant_name,null as tran_merchant_no
  ,null as app_no,null as transact_name,null as transact_type,sum(mid_transact_value) as mid_transact_value,sum(mid_voucher_value) as mid_voucher_value
  ,null as transact_time,null as account_date,null customer_id
  from
  (
       Select to_char(v1.TRANSACT_TIME-4/24,'yyyy-mm-dd') as transact_date,v1.merchant_no,substr(v1.POINT_NO,0,2) point_no,substr(v1.POINT_NO,3,2)  terminal_no,v1.psam_no,
       v1.card_type,v1.card_type_name,v1.card_face_no,v1.card_logical_number,v1.tran_merchant_name,v1.tran_merchant_no,
       v1.app_no,v1.transact_name,v1.transact_type,v1.mid_transact_value,v1.mid_voucher_value,v1.transact_time,v1.account_date,v1.customer_id
       ,1 as order_no
       From v_card_tran_query v1
       where
      ('-1'=v_card_face_no or card_face_no=v_card_face_no)
      and  ('-1'=v_card_logical_number or card_logical_number=v_card_logical_number)     
      and  ('-1'=v_merchant_no or merchant_no=v_merchant_no)
      and  ('-1'=v_point_no or substr(v1.POINT_NO,0,2)=v_point_no)
      and  ('-1'=v_terminal_no or substr(v1.POINT_NO,3,2)=v_terminal_no)
      and  ('-1'=v_card_type or card_type=v_card_type)     
      and v1.account_date between v_account_date1 and v_account_date2
      and v1.transact_time between v_transact_time1 and v_transact_time2
      and
      ( v1.partition_field='00'
         or exists
        (
        select * from sys_partition a where
        a.start_date  between v_account_date1 and v_account_date2
        or a.end_date  between v_account_date1 and v_account_date2
        or v_account_date1 between a.start_date and a.end_date
        or v_account_date2 between a.start_date and a.end_date
        )
      )
  ) v1
  group by rollup(transact_date,merchant_no,point_no,terminal_no)
  having terminal_no is null
  order by transact_date desc,merchant_no asc,point_no asc ,terminal_no asc ;
End transact_data_query1;
End Acc_Card1;
  • 描述: 查询效果
  • 大小: 49.7 KB
  • data1.rar (36.3 KB)
  • 描述: 相关数据
  • 下载次数: 41
分享到:
评论

相关推荐

    Oracle报表经典语句

    本文档将深入解析几个经典的Oracle报表SQL语句,这些语句涉及到了Oracle中的高级功能,如窗口函数、联合查询等,并通过实际案例展示了如何构造报表。 #### 二、SQL语句分析 ##### 1. 分类汇总与总计 此段代码展示...

    ORACLE__SQL语句教学

    Oracle SQL语句教学涵盖了SQL语言的基础知识点,特别适合初学者入门。Oracle是全球领先的大型数据库系统之一,而SQL(Structured Query Language,结构化查询语言)是用于管理关系数据库的标准编程语言。本篇文档...

    数据分层汇总交叉报表SQL语句实现方法

    本文将探讨如何利用SQL语句实现这样的功能,特别是通过WITH AS语句和构建相应的数据结构。 首先,WITH AS语句是SQL中的一种高级查询技术,它允许我们为子查询命名,从而在后续的查询中重复使用。这种语法在处理复杂...

    oracle 数据处理sql语句源码

    在实际应用中,这些SQL语句源码可能涉及到复杂的业务逻辑,比如通过触发器实时更新报表,或者通过存储过程处理大量数据的批处理任务。这些源码对于理解Oracle数据库如何高效地处理数据,以及如何利用其高级特性来...

    实用总结SQL语句大全实用总结SQL语句大全.rar

    本资源“实用总结SQL语句大全”涵盖了SQL的基本概念、语法以及高级特性,旨在帮助用户全面理解和掌握SQL。 首先,SQL的核心在于查询。基本的查询语句`SELECT`用于从数据库中提取数据,可以配合`FROM`指定数据来源,...

    Oracle中SQL语句行列之间相互转换

    ### Oracle中SQL语句行列之间的相互转换 在Oracle数据库中,有时我们需要将表格中的行转换为列或将列转换为行,这种操作被称为行列转换。这种转换对于数据分析、报表制作等场景非常有用。本文将详细介绍Oracle中...

    Oracle精妙的sql语句

    以下是对各部分提到的SQL语句及其功能的详细解析: ### 1. 假数据插入:`SELECT * INTO b FROM a WHERE 1<>1` 这一语句看似简单,实则巧妙地用于创建一个空表结构而不插入任何数据。由于`WHERE 1<>1`条件永远不...

    SQL Server 到 Oracle 的SQL 语法自动翻译器源码

    SQL的过程中对调用者传进的SQL进行转换后再执行,就基本完成了整个系统的SQL语法从SQL Server到Oracle的 兼容,呵呵,听起来有点不可思议。系统已经于3个月前上线,目前运行很稳定。 如果有人用得着或发现什么...

    生成SQL语句工具

    生成SQL语句的工具是为了帮助程序员和数据库管理员更高效、准确地编写和管理SQL查询而设计的。这些工具通常具备多种功能,包括代码自动生成、查询优化、错误检查等,大大提升了数据库操作的效率。 首先,我们要理解...

    SQLTracker Oracle跟踪工具(支持64位)

    它能够实时监控数据库中的SQL语句执行情况,包括执行频率、执行时间、资源消耗等关键指标。通过这些数据,管理员可以快速定位到影响系统性能的关键SQL,从而进行针对性优化。 其次,SQLTracker具备详细的性能分析...

    Introduction to Oracle9i:SQL Ed 2.0

    **Oracle 特有的 SQL 语句**:这部分内容涵盖了 Oracle9i 中独有的 SQL 语句,这些语句能够帮助用户更高效地管理和查询数据。 **iSQL*Plus**:iSQL*Plus 是一个强大的工具,用于执行 SQL 语句以及格式化和报告数据...

    sql语句生成的工具

    SQL语句生成工具是数据库管理工作中的一大利器,它极大地简化了数据库操作,特别是对于复杂的查询、更新和数据处理任务。这种工具通常具有图形用户界面,允许用户通过直观的界面来构建SQL语句,而无需手动编写复杂的...

    常用的SQL语句.pdf

    【SQL语句基础】 SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言,它包含了数据查询、数据更新、数据插入和数据删除等操作。SQL并非一种完整的编程语言,而是一种特殊的、高度结构化的查询...

    oracle_plsql语句大全

    **标题:** Oracle PL/SQL语句大全 **描述:** Oracle PL/SQL是Oracle数据库中一种强大的编程语言,它结合了SQL数据操作能力和过程化控制结构,使得开发者能够编写复杂的应用程序。 ### SQL*PLUS 命令介绍 在Oracle...

    Oracle数据库SQL培训 数据库SQL语句编写培训教程 Oracle高级查询SQL优化 结合实际案例讲 视频+PPT.rar

    另外,确保查询能够有效利用索引也很重要,这可能涉及到SQL语句的编写方式,比如避免全表扫描,合理使用WHERE子句等。除了索引,还有其他优化策略,如物化视图、分区表、并行查询等,它们都是提高数据库性能的重要...

Global site tag (gtag.js) - Google Analytics