You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Crystal Reports柱状图:设置'Change On'双值,剔除值为0的条形

针对你这个Crystal Reports柱状图的配置需求,结合你提供的SQL数据(包含Max、Fritz两个名称,三天的重复记录),我整理了具体的操作步骤,帮你实现目标:

一、先确保数据的聚合逻辑正确

因为你的原始数据是重复的明细记录,首先得让图表基于名称+日期的组合来统计数量,这样才会有准确的条形数值:

  • 打开柱状图的编辑窗口,切换到「数据」标签页
  • 在「Show Value」区域,选择计数(比如Count(*))作为要展示的数值,这样每个(Name, Day)组合的记录数会被计算出来
二、配置"Change On"包含两个值

Crystal Reports里的"Change On"是用来定义图表的系列/分组维度的,要让它包含两个值(也就是Name和Day),操作如下:

  • 同样在「数据」标签页的「Change On」区域,点击添加按钮
  • 依次选择Name和Day字段加入到该区域,这样图表会同时按名称和日期来区分不同的条形组(比如你会看到Max在5-02、5-04的条形,Fritz在5-02、5-03的条形)
三、剔除值为0的条形

要去掉那些计数为0的条形,有两种常用方法:

方法1:在数据源层面过滤(推荐)

直接修改你的SQL语句,先聚合再过滤掉计数为0的组合,这样返回给报表的都是有效数据,避免后续图表处理的麻烦:

SELECT Name, Day, COUNT(*) AS RecordCount
FROM (
    SELECT 'Max' as Name, '2018-05-02' as Day union all 
    select 'Max', '2018-05-02' union all 
    select 'Max', '2018-05-02' union all 
    select 'Fritz', '2018-05-02' union all 
    select 'Fritz', '2018-05-02' union all 
    select 'Fritz', '2018-05-03' union all 
    select 'Fritz', '2018-05-03' union all 
    select 'Fritz', '2018-05-03' union all 
    select 'Max', '2018-05-04'
) AS RawData
GROUP BY Name, Day
HAVING COUNT(*) > 0

方法2:在图表筛选器里设置

如果不想修改SQL,也可以在图表里直接加筛选条件:

  • 打开图表的「筛选器专家」(Filter Expert)
  • 添加筛选规则:选择聚合后的计数字段(比如Count(*)),设置条件为 > 0
  • 注意要确保筛选器应用的是聚合后的值,而不是原始明细记录,否则可能无法正确过滤

这样配置完成后,你的柱状图就会同时按名称和日期分组,并且只显示有记录的非零条形了。

内容的提问来源于stack exchange,提问作者NineBerry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:31:46