免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 808 | 回复: 0
打印 上一主题 下一主题

多源分片报表的讨论 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-18 10:12 |只看该作者 |倒序浏览

转自:
report99
实际业务中有许多报表处理起来会比较麻烦,比如下例:

这是一张银行业务的实际报表经过适当简化以后形成的,我们有一个制表的实际数据可以看一下。报表统计的是银行各支行抵押贷款情况,按照不同分类方式对不同抵押物的总价值进行统计。
数据库的数据表为,客户有一张单独的编码,名称对照的字典表,另有汽车,房产,土地,其他四项分开的四张表。每张表均通过客户编码字段与客户表建立关系。
用大多数的传统报表工具,都只支持单一数据源。这时标准的做法是这张表需要写如下的SQL语句准备数据::
select 客户表.客户编码,汽车.抵押金额, 房产.抵押金额, 土地.抵押金额,其他.低价金额 from 汽车,房产,土地,其他
where (客户表.客户编码 in (select 汽车.客户编码 from 汽车) or客户表.客户编码 in (select f房产.客户编码 from 房产) or客户表.客户编码 in (select 土地.客户编码 from 土地) or客户表.客户编码 in (select 其他.客户编码 from 其他)) and汽车.客户编码=客户表.客户编码 and?房屋.客户编码=客户表.客户编码 and?土地.客户编码=客户表.客户编码 and?其他.客户编码=客户表.客户编码
这个只是最简单的一种情况,实际情况中,一个客户往往是多次抵贷,那么我们还需要对客户名称进行分组,将客户多次抵押的数量合计起来。那个SQL的复杂程度又增加了。
select 客户表.客户编码,sum(汽车.抵押金额), sum(房产.抵押金额), sum(土地.抵押金额),sum(其他.低价金额 ) from 汽车,房产,土地,其他 group by汽车.客户编码,房产客户编码.土地.客户编码,其他.客户编码 where (客户表.客户编码 in (select 汽车.客户编码 from 汽车) or客户表.客户编码 in (select f房产.客户编码 from 房产) or客户表.客户编码 in (select 土地.客户编码 from 土地) or客户表.客户编码 in (select 其他.客户编码 from 其他)) and汽车.客户编码=客户表.客户编码 and?房屋.客户编码=客户表.客户编码 and?土地.客户编码=客户表.客户编码 and?其他.客户编码=客户表.客户编码
在加上选择当前支行的情况。SQL将更加复杂,我们就简略了。在实际报表中,上面我们看到的报表还只是这个报表的左半部分。全表如下:

即再对每个表中的某个抵押物情况的字段进行统计,where条件增加了一倍。
相信很少人能够一次写出完成SQL语句来完成这张报表。
而如果报表工具能够支持多数据源,则情况会变得简单得多。支持多源有两个含义,一是要能同时从多个数据源获得数源,二是能够同时使用多个数据库源的数据。
在采用多数据库源的典型产品润乾报表,象上述的复杂的报表,实现起来就非常简单。只用写几句简单的SQL:
1. select DISTINCT汽车.客户编码,房屋.客户编码,土地.客户编码,其他.客户编码from 汽车,房屋,土地,其他
2. select 其他.客户编码 from 其他
3.select 客户表.客户编码 from 客户表 where 客户表.开户支行= 参数支行
4.select sum(汽车.抵押金额) from 汽车 group by 汽车.客户编码
5. select sum(房屋.抵押金额) from 房屋 group by 房屋.客户编码
6. select sum(土地.抵押金额) from 土地 group by 土地.客户编码
7. select sum(其他.抵押金额) from 汽车 group by 其他.客户编码
只需要这么几条简单的SQL在润乾报表EXCEL式的格子中再作简单的关联就可以了,相信这样简单的SQL稍微知道点业务,会一般的SQL的人就能够写出来。
而接着完成右边的部分。我们只要参照3-7SQL语句的写法改成计算所有的金额按不同类型分布即可。
在润乾报表工具的格子中,直接写入公式,如:

我们可以看到,所有的多级关联在报表设计时,变成了多个二级关联,简化了SQL的实现,同时在运算效率上得到了很大的提高。
原文网址:
多源分片报表的讨论


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/10060/showart_57570.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP