水晶菜鸟高分求助

icejd 2007-09-22 03:31:20
表结构如下

id 车型 金额 班次
1 5 1
1 5 1
1 5 1
3 15 2
2 10 1
2 10 1
1 5 2

现在想在同一张表中求出
班次为1或2的每个车型的总数量,及占所有数量的百分比,平均值
如 1型车总数为多少,2型车总数为多少,3型车......
还想求出班次为1或2的第个车型的总金额,及占全部金额的百分比,平均值
我用
我用的是vs2005 水晶10
我非常菜,向水晶报表拉个字段什么的还凑合,涉及运算就傻眼了,请高手帮忙,分不成问题,不够还可以再加
越详细越好,因为我是菜鸟,太菜了,谢谢
那个count及sum我怎么也不会用,哭死了
...全文
141 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hernmmy 2008-05-10
  • 打赏
  • 举报
回复
我也想遇到了同样的问题:
if {车型}='1'
then
sum({金额})
那么求出来的金额是所有的车型的金额
icejd 2007-09-25
  • 打赏
  • 举报
回复
班次就只有两个了,看样子也只好在数据源中找出口了,结贴了
xwdd129 2007-09-24
  • 打赏
  • 举报
回复
恩,我理解的是有偏差,这样的报表,按常规设计就要一个一个写公式计算,不如试试交叉表!

另外,你这个表相当于横向的,如果你的班次不多,可以对数据源进行行转列变换,从数据源里生成每一个班次的字段,若班次很多则不行,并且页面肯定也会超出!
icejd 2007-09-23
  • 打赏
  • 举报
回复
你自己要搞清楚,求和是对一个字段的,而不是某一个字段值的!!

Sum({表.车型},{表.班次}) 是对所有车型都按班次求和,这样写每一条记录都会自动得到这个值,根本不需要你自己去指定=1还是=2
------------------------------
老大,你是根本没有明白我的意思啊,而我明白你的意思,我只是对于水晶报表刚刚接确,基本属于不会那种类型,你说的方法我不是没有试过,我不可能只会问而不会尝试着去作,对于SQL我可能会有很多种方法来解决,但是对于水晶报表我真的无能为力
我的目的很简单,我的报表如下图
http://www.vs2007.cn/b.jpg
我想要求出每班次的每型车的数量及金额并显示在表中

Count ({Comego_charge.Car_Type},{Comego_charge.User_bc} ) 这样的写提示我"必须有一个与该字段匹配的组"
xwdd129 2007-09-23
  • 打赏
  • 举报
回复
如果你非要得到某一个值的,那也有很多办法,通过SQL控制报表记录集、传参数、通过公式传值都能实现,请你试了再说不行!!
xwdd129 2007-09-23
  • 打赏
  • 举报
回复
你自己要搞清楚,求和是对一个字段的,而不是某一个字段值的!!

Sum({表.车型},{表.班次}) 是对所有车型都按班次求和,这样写每一条记录都会自动得到这个值,根本不需要你自己去指定=1还是=2
icejd 2007-09-23
  • 打赏
  • 举报
回复
sql中我可以这样求,select count(*) as b from 表 where 班次=1
select count(*) as c from 表 where 班次=2

那么在水晶报表中如何求呢?
icejd 2007-09-23
  • 打赏
  • 举报
回复
根据你的描述可知,你求和的依据为“班次”字段,那你分别求出对应班次的车型总数量和总金额即可。咱当程序员的,可不能连count和sum都分不清啊~
-----------------------
问题是要有条件的呀,
Sum({表.车型},{表.班次})
这个班次我需要分别计算1班和2班呀,这个参数如何传进来呢???
Sum({表.车型},{表.班次})
这样写有问题,根本不通过
xwdd129 2007-09-22
  • 打赏
  • 举报
回复
当然,显示百分比的话还需要加工加工,要变成字符串来显示,大致为:

ToText(({表.车型}/Sum({表.车型},{表.班次}))*100) + '%'
xwdd129 2007-09-22
  • 打赏
  • 举报
回复
根据你的描述可知,你求和的依据为“班次”字段,那你分别求出对应班次的车型总数量和总金额即可。咱当程序员的,可不能连count和sum都分不清啊~

计算总和的公式为:
Sum({表.车型},{表.班次})

计算百分比的公式为:
{表.车型}/Sum({表.车型},{表.班次})


附:Sum函数
Sum (fld)
Sum (fld, condFld)
fld 是进行求和的数据库字段或公式字段。
condFld 是对 fld 中的值进行分组所依据的字段。
mhxcy 2007-09-22
  • 打赏
  • 举报
回复

4,818

社区成员

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

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