设为首页 收藏本站
查看: 635|回复: 0

[经验分享] oracle的报表的典型sql语句

[复制链接]

尚未签到

发表于 2016-8-8 06:37:01 | 显示全部楼层 |阅读模式
实现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
看看首项,第二项效果怎么样!


创建包,包体,使用存储过程 返回游标集合

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;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-254412-1-1.html 上篇帖子: oracle 临时表和动态SQL 下篇帖子: oracle查询语句数据横向变纵向
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表