【问题标题】:Crystal Report Sum total for each date in date range日期范围内每个日期的水晶报表总和
【发布时间】:2012-05-21 17:42:19
【问题描述】:

这是我第一次尝试堆栈溢出,所以希望大家能帮助我。我很乐意在这里开始贡献,过去它是一个非常有用的工具。

好的,所以我正在尝试编写一份报告,以图表化制造设施的总逾期时间。我所拥有的是一组表格,列出了每个制造订单并给出了截止日期和完成日期。运行报告的人输入一个日期范围,我想生成一个图表,其中 x 轴为日期,y 轴为逾期时间总和。也许我在实现三公式技巧时遗漏了一些东西,但我无法让它发挥作用。我可以按截止日期分组,但这只会给我在给定日期过期的订单总数。

我需要的是类似以下的东西,可以用图表显示:

    For each (date in DateRange) {
       If (Due Date < i) && (Comp Date > i) {
          Past Due Hours = Past Due Hours + manufacturing order Hours
       }
    }

我知道它不在 Crystal Syntax 中,我只是想了解一下。有什么帮助吗?

【问题讨论】:

    标签: crystal-reports report summary group-by


    【解决方案1】:

    如果我理解正确的话,这个问题会经常出现。你有这样的东西吗?

    OrderNum DueDate  CompletedDate
    1        01/01/01 01/02/01
    2        01/01/01 01/01/01
    3        01/02/01 01/03/01
    4        01/02/01 01/02/01
    

    现在您需要做的第一件事是获取一个包含所有日期的表格(还有其他类似的方法),然后加入您的数据集,这样您最终会得到:

    OrderNum DueDate  CompletedDate Date
    1        01/01/01 01/02/01      01/01/01
    2        01/01/01 01/01/01      01/01/01
    3        01/02/01 01/03/01      01/01/01
    4        01/02/01 01/02/01      01/01/01
    1        01/01/01 01/02/01      01/02/01
    2        01/01/01 01/01/01      01/02/01
    3        01/02/01 01/03/01      01/02/01
    4        01/02/01 01/02/01      01/02/01
    1        01/01/01 01/02/01      01/03/01
    2        01/01/01 01/01/01      01/03/01
    3        01/02/01 01/03/01      01/03/01
    4        01/02/01 01/02/01      01/03/01
    

    接下来你需要添加一个字段来判断订单是否为{@overdue}

    if {table.duedate} < {table.date} and {table.completeddate} > {table.date} then 
     1
    else 
     0;
    

    确保为空值选择默认值以避免任何异常)。

    您现在可以创建一个图表,将sum({@overdue}){table.date} 绘制成图表

    L

    【讨论】:

    • 谢谢李,这是唯一的方法吗,当我们谈论返回几百行时,它似乎效率低下,如果它们在日期范围内的每个日期被选中一次,就会变成数千行?
    • 我想是的。您要查找的数据点根本不存在于当前数据集中。根据您的日期范围的大小,您可以考虑为每个数据点硬编码一个公式,但我想这会更加痛苦。
    • 所以为了填补空白,我使用了“WITH”语句来创建日期范围。然后是“CROSS JOIN”将其添加到我的数据中。我得到了我需要的东西,感谢您的帮助。
    猜你喜欢
    • 2013-01-25
    • 2015-02-11
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多