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

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¥.
我虽然能过滤掉重复数据,但汇总结果是不会变的。

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

跪求解答!!!!!!!!!!
...全文
164 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
东莞寻香苑 2011-06-25
  • 打赏
  • 举报
回复
一个简单的定义三个公式:
公式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
  • 打赏
  • 举报
回复
大哥,是不是你汇总的列错了,,看你上面显示的结果,好像你是汇总第二项了。。。而不是第四项

4,816

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧