当前位置:编程学习 > C#/ASP.NET >>

新手上路,迫切请教

请问各位,水晶报表如何实现数据汇总后的同比?以及赔付率?   

年度   单位  保费   赔款   赔付率
2008    1    100    10
2008    1    200    20
2008    1    300    30
2009    2    400    40
2009    2    500    50
2009    2    600    60

以上为access数据表单,如何做出以下表呢?

单位   保费    赔款    赔付率
  1    600     60        10%
  2    1500    150       10%


小弟在这先谢谢了 --------------------编程问答-------------------- 我是新手,越详细越好,最好有图 --------------------编程问答-------------------- 1:首先,假设你已经会用水晶报表做基本的明细报表
2:你的数据样本,跟要求不匹配。

赔付率还可以算,你这个是简单赔付率,就是赔款/保费
但是同比的话,
你这个单位不一样,一个是1,一个是2,怎么进行同比呢?
虽然单纯从你的数据结果上可以实现,但是逻辑不对。

现在情况首先对数据进行基础聚合,
Select 年度, 单位, Sum(保费) as 保费 , Sum(赔款) as 赔款 
from 
table
Group by 年度, 单位

直接得到一个这样的数据结果

单位 保费 赔款 
 1   600   60 
 2   1500  150 

然后,在使用公式就可以实现。

如赔付率 使用公式(当然,也可以在SQL中就算好)
if {保费字段}=0 then
0
else
 {赔款字段}/{保费字段}

同比的话,请确认下我前面说的先。 --------------------编程问答-------------------- 阿泰说的对,我写的有问题,请继续同比的做法! --------------------编程问答-------------------- 阿泰请上图,尤其是在哪写公式!

绝对菜鸟,多谢帮忙! --------------------编程问答-------------------- 泰哥太忙,我来给你上图
首先进入水晶报表的设计界面,在左上角有个 "公式字段",这个上面右键 ---> 新建

随即来到公式编辑界面
泰哥的公式中我标注红色的都可以从公式编辑器上方(左数第二块)中对应的字段拖曳下来
if {保费字段}=0 then
0
else
 {赔款字段}/{保费字段}
如图

然后 按照语法稍加编辑 即可得到 下图的结果

单击左上方的保存并关闭,回到水晶报表主界面,此刻 "公式字段"栏多了一个你刚才新建的字段,下面即可把它当普通字段那样用咯(我这里示范的 公式字段名 为 "peilv")

--------------------编程问答-------------------- 5楼的姐姐能把同比也给做出来吗?小弟谢谢啦 --------------------编程问答-------------------- 首先感谢on_my_way20xx :)

另外,回复6楼,根据我多年的经验,on_my_way20xx明显不是个“姐姐”。。 --------------------编程问答--------------------

你现在已经实现了 
单位 保费 赔款 赔付率
  1 600 60 10%
  2 1500 150 10%

这个效果了吗?如果已经实现了,才有继续说下去的前提
--------------------编程问答-------------------- 我已经实现了,

单位 保费 赔款 赔付率
 1 600 60 10%
 2 1500 150 10%
  会做这个了,请继续同比的问题!谢谢!

不好意思on_my_way20xx,哥哥! --------------------编程问答-------------------- 另外请教:如果在交叉表里,上述问题如何做?
当然数据满足! --------------------编程问答-------------------- 泰哥,帮忙啊,我的问题你还没有回答啊! --------------------编程问答-------------------- 同比是什么意思? --------------------编程问答-------------------- 你所指的交叉表 是指 多表查询么?
像下面这样的?
select a.id,a.name,b.address from student as a ,studentinfo as b
where a.id = b.id --------------------编程问答-------------------- 司部 新保 续保 转保
2009 2010 同比 2009 2010 同比 2009 2010 同比
1
2
3
4
5
6
--------------------编程问答-------------------- 泰哥,帮帮忙,我的问题怎么解决啊? --------------------编程问答-------------------- 最开始需要的同比,即要求第一行的数据与第2行的同比,其实比较简单。
仅以数据样本为例(当然,该样本是不完善的)

首先使用公式,分别得到第1行和第2行的值。

新建公式x1(参考5楼)

//得到第一行的值
numbervar x1;
if recordnumber=1 then 
    x1:=cdbl({雇员.薪金})
else
    x1:=x1


新建公式x2

新建公式x1(参考5楼)

//得到第二行的值
numbervar x2;
if recordnumber=2 then 
    x2:=cdbl({雇员.薪金})
else
    x2:=x2


x1和x2都放到详细资料节,然后抑制显示

新建公式x3,得到同比

if {@x1}=0 then
'-'
else
cstr({@x2}/{@x1}*100,2) +'%'


将x3放到详细资料节后面的节即可





补充:.NET技术 ,  图表区
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,