前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【干货】Oracel存储过程写报表实战

【干货】Oracel存储过程写报表实战

作者头像
Vaccae
发布2019-07-24 11:11:11
1.4K0
发布2019-07-24 11:11:11
举报
文章被收录于专栏:微卡智享

前言

前面我们学习了《Oracle的静态游标与动态游标》游标的使用方法,这篇我们就来看看怎么用存储过程写出客户想要实现的报表。

需求报表样式

上面的报表可以看出,客户要的是一个横向列表,对应的商户周租金与周销售的对比,一般来说我们从数据库里查询横向报表非常的麻烦,还好这个是周的报表,所以我们就可以固定表列,最终计算出我们的数据,当然不能同这个EXCEL里完全一样,但是也基本实现的客户的需求。

解决思路

  1. 首先根据客户要求的报表我们先创建一个临时的中间表,用于处理横向数据问题。
  2. 根据客户输入的一个日期参数,我们计算出输入日期所对应的周的开始日期和结束日期。
  3. 临时表中第一行插入我们所要查询的日期,用于判识,因为报表的列不能动态修改日期,我们只能用周一周二等方式显示,所以这样就不容易判断出报表查询的对应日期。
  4. 然后先在中间表里加入所有的店铺基本信息。
  5. 计算对应商户的周租金。
  6. 更新商户这周中每天的销售。
  7. 计算中间表中的数据,坪效,合计,租售比等。
  8. 输出显示游标。

代码实现

1.首先根据客户要求的报表我们先创建一个临时的中间表,用于处理横向数据问题。

中间表的用法可以看《Oracle的临时表的使用》这一篇中有详细讲解。

上面为临时表的创建,列都说的比较清楚了。


然后开始写存储过程,我们的存储过程名定义为sRpt_shpWeekXsRent,其中输入参数只有一个日期,输出参数为游标

2.根据客户输入的一个日期参数,我们计算出输入日期所对应的周的开始日期和结束日期。


3.临时表中第一行插入我们所要查询的日期,用于判识,因为报表的列不能动态修改日期,我们只能用周一周二等方式显示,所以这样就不容易判断出报表查询的对应日期。


4.然后先在中间表里加入所有的店铺基本信息。

注意上面的图和这张图中的1,2是标红框的,这是为了最后我们查询的时候用itemno进行排序,这样开始日期到结束日期肯定会显示在第一行了。


5.计算对应商户的周租金。

周租金我们用的计算方法是能过数据表里获取到对应的开始结束日期的租金,除去开始到结束日期的天数,再乘7为一周。


6.更新商户这周中每天的销售

先通过静态游标获取到地应的分割表,生成动态的查询销售的语句

然后再根据销售关联我们需要的信息完善原来的动态SQL语句。

动态生成游标数据,然后判断对应的星期几用于修改对应周几列的销售数据。


7.计算中间表中的数据,坪效,合计,租售比等。

首先计算每天的坪效数。

然后更新周合计。

最后更新租售比。


8.输出显示游标。


这样我们的存储过程就写完了,下面我们在软件里把报表设置进去,然后看看效果

查询的最后结果

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微卡智享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档