水晶报表 重复数据 汇总问题。(希望高手来指点)

answer913 2011-06-24 04:56:11
举个例子说明问题:
现在甲有1000元买件物品,分三次付款。
乙有500元买件物品,分二次付。

A B C D
甲 1000¥ 300¥ 第一次
甲 1000¥ 400¥ 第二次
甲 1000¥ 200¥ 第三次
乙 500¥ 100¥ 第一次
乙 500¥ 400¥ 第二次

我需要B字段和C字段汇总,
得到结果是:
A B C D
甲 1000¥ 300¥ 第一次
甲 1000¥ 400¥ 第二次
甲 1000¥ 200¥ 第三次
乙 500¥ 100¥ 第一次
乙 500¥ 400¥ 第二次
4000¥ 1400¥
但是很明显甲只有1000元,乙只有500元,但汇总后却变成了4000¥。正确结果应该是1500¥.
我虽然能过滤掉重复数据,但汇总结果是不会变的。

尝试用数据集来直接传递,我也得不出来我想要的结果。

跪求解答!!!!!!!!!!
...全文
117 点赞 收藏 19
写回复
19 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
一个简单的定义三个公式:
公式yyy1:
whilePrintingRecords;
shared Numbervar Amount:=0;

公式yyy2:
whilePrintingRecords;
Numbervar Amount;
whilePrintingRecords;
Numbervar Amount;
if not onfirstrecord then
(
if Previous ({tableC.a}) <> {tableC.a} or Previous ({tableC.b}) <> {tableC.b} then
Amount:=Amount+{tableC.b}
)
else
(
Amount:=Amount+{tableC.b}
)
公式yyy3:

whilePrintingRecords;
Numbervar Amount;

把公式yyy1放到报表头,然后抑制它显示(即yyy1在报表头的属性Suppress : true)
把公式yyy2放到详细资料区,然后抑制它显示(即yyy2在报表头的属性Suppress : true)
把公式yyy3拖到详细资料区以下的任何区域,yyy3即你所要的汇总
(红色部分不一定完全符合你的要求,只需稍微修改就可以)
回复
xpcxpy 2011-06-24

SORRY ,第一次发图。。。
回复
xpcxpy 2011-06-24
回复
xpcxpy 2011-06-24
你试试这样:先按城市分组
再修改运行总计字段: 在 重置下面 勾选 组更改时,选 刚才新建的分组
再将运行总计字段放到组尾,
回复
answer913 2011-06-24
想要的结果大概就是
我留言在10楼那种格式。
回复
answer913 2011-06-24
SQL我当然也考虑过,我的列很多,写起来太麻烦了。
用公式怎么处理,能否举个例子,
请教。
回复
阿泰 2011-06-24
从你的数据情况来看,水晶报表的表现是对的。
“但是很明显甲只有1000元,乙只有500元,但汇总后却变成了4000¥。正确结果应该是1500¥.”
水晶报表理解不了你的那个数据逻辑,他看到3条1000的数据,自然汇总成3000.

这种情况可以做一个公式单独去处理,当然SQL里直接处理也可以。
用SQL直接处理直观些。
回复
answer913 2011-06-24
[Quote=引用 7 楼 tashiwoweiyi 的回复:]
你数据有经过排重吗?

下面是sql查询例子代码。不知道是否有用。

SQL code

create table tableC
(
a varchar(30),
b int ,
c int ,
d varchar(30)
)
go

insert into tableC values ('甲',1000,300,'第一次')
ins……
[/Quote]
辛苦你了·,你这个查询只是得到汇总结果啦。你把我其他数据都丢啦,
如果我是几十列·是不是要写死了。。。其实我想过是可以用SQL写出来·但是太麻烦太麻烦了。
回复
answer913 2011-06-24
E 属于城市一列,
我对E分组
我想得到结果是
在E 组尾结果如下

A B C D E
甲 1000¥ 300¥ 第一次 城市A
甲 1000¥ 400¥ 第二次 城市A
甲 1000¥ 200¥ 第三次 城市A
乙 500¥ 100¥ 第一次 城市A
乙 500¥ 400¥ 第二次 城市A
E : 1500¥ 1400¥
丙 700¥ 300¥ 第一次 城市B
丙 700¥ 400¥ 第二次 城市B
E: 700¥ 700¥
回复
xpcxpy 2011-06-24
对你的问题有点糊涂,,
A B C D E
甲 1000¥ 300¥ 第一次 城市A
甲 1000¥ 400¥ 第二次 城市A
甲 1000¥ 200¥ 第三次 城市A
乙 500¥ 100¥ 第一次 城市A
乙 500¥ 400¥ 第二次 城市A
丙 700¥ 300¥ 第一次 城市B
丙 700¥ 400¥ 第二次 城市B
你想要的汇总是什么样的?
回复
answer913 2011-06-24
[Quote=引用 5 楼 xpcxpy 的回复:]
列B 1500¥的汇总功能 可以通过 运行总计字段来完成:

汇总字段选 B
汇总类型选 求和

求值 勾选 字段更改时 选A
[/Quote]
这个只能解决我这个例子上的问题,没有解决我想要的,
比如现在 对E 分组 再汇总
结果就是这样
A B C D E
甲 1000¥ 300¥ 第一次 城市A
甲 1000¥ 400¥ 第二次 城市A
甲 1000¥ 200¥ 第三次 城市A
乙 500¥ 100¥ 第一次 城市A
乙 500¥ 400¥ 第二次 城市A
E : 1500¥
丙 700¥ 300¥ 第一次 城市B
丙 700¥ 400¥ 第二次 城市B
E: 2200$


回复
tashiwoweiyi 2011-06-24
你数据有经过排重吗?

下面是sql查询例子代码。不知道是否有用。

create table tableC
(
a varchar(30),
b int ,
c int ,
d varchar(30)
)
go

insert into tableC values ('甲',1000,300,'第一次')
insert into tableC values ('甲',1000,400,'第二次')
insert into tableC values ('甲',1000,200,'第三次')
insert into tableC values ('乙',500,100,'第一次')
insert into tableC values ('乙',500,400,'第二次')

go

select (select sum(B) as b from (select b FROM tableC group by b) bb ) b, (select sum(c) from tableC) c


回复
xpcxpy 2011-06-24
把刚才新建的运行总计字段放到报表尾 就是对所有详细资料的汇总了
回复
xpcxpy 2011-06-24
列B 1500¥的汇总功能 可以通过 运行总计字段来完成:

汇总字段选 B
汇总类型选 求和

求值 勾选 字段更改时 选A
回复
answer913 2011-06-24
[Quote=引用 1 楼 tashiwoweiyi 的回复:]
大哥,是不是你汇总的列错了,,看你上面显示的结果,好像你是汇总第二项了。。。而不是第四项
[/Quote]

我现在 要对 第二项,第三项 都需要汇总。大哥 看下题目啊。
回复
answer913 2011-06-24
这个格式 发帖出来的时候有点问题。

A 是甲那一列
B 是持有的金钱那一列,
C 是付了钱的那一列,
D 是付了钱的次数这一列,
我汇总必然 看B 和C 金额钱的总合
最后汇总的结果是
A B C D
甲 1000¥ 300¥ 第一次
甲 1000¥ 400¥ 第二次
甲 1000¥ 200¥ 第三次
乙 500¥ 100¥ 第一次
乙 500¥ 400¥ 第二次
A: 4000¥ 1400¥
但正确的结果应该是
A : 1500¥ 1400¥

这跟汇总的列有什么关系?
回复
tashiwoweiyi 2011-06-24
[Quote=引用 1 楼 tashiwoweiyi 的回复:]
大哥,是不是你汇总的列错了,,看你上面显示的结果,好像你是汇总第二项了。。。而不是第四项
[/Quote]

而不是第三项。。。
回复
tashiwoweiyi 2011-06-24
大哥,是不是你汇总的列错了,,看你上面显示的结果,好像你是汇总第二项了。。。而不是第四项
回复
发帖
图表区
创建于2007-09-28

4810

社区成员

.NET技术 图表区
申请成为版主
帖子事件
创建了帖子
2011-06-24 04:56
社区公告
暂无公告