汇总字段的每月最大值

时间:2011-09-07 16:02:48

标签: crystal-reports

下午好。我正在尝试制作一份报告,显示每月的股票持有量摘要。

我使用的表具有以下数据(数据类型): 站点(字符串),客户(字符串),周结束日期(int - YYMMDD格式),结算余额(int)

看起来像这样:

Site Cust   Wk End  Bal

UK - Dave - 110821 - 25

UK - Sam - 110821 - 15

UK - John - 110821 - 30

UK - Dave - 110828 - 80

UK - Sam  - 110828 - 30

UK - John - 110828 - 10

UK - Dave - 110904 - 100

UK - Sam  - 110904 - 29

UK - John - 110904 - 51

UK - Dave - 110911 - 97

UK - Sam  - 110911 - 34

UK - John - 110911 - 12

我想要找到的是每个站点的最大每周结算余额。这样它可以显示如下信息:

UK - 08/11 - 120

UK - 09/11 - 180

它需要为每个站点生成每月一行,其中包含该月的最大周数。

月/年公式是从周末到拉月/年的几个子串(记住数据是YYMMDD格式)。

当我在使用整个网站的组和使用公式生成MM / YY的水晶中尝试此操作时。在尝试获取本月每周摘要的最大值时,我总是收到“无法概括此字段”错误。

编辑:我编写了SQL来返回一个站点的结果。这可能有助于更好地解释问题。请参阅以下内容:

  Firstly a definition for clarity MMYY=(substr(A.WEEKEND,3,2)||'/'||substr(A.WEEKEND,1,2))

    select distinct(MMYY) as Month, MAX(B.CLOSEBAL) as MonthMax
    from balance_file as A
    join(
    select MMYY as dte,
    sum(CLOSING) as CLOSEBAL
    from balance_file
    where SITE='UK'
    group by WEEKEND
    order by WEEKEND)
    as B on MMYY=B.dte
    where WEEKEND>110101 and WEEKEND<110505
    group by WEEKEND
    order by Month

2 个答案:

答案 0 :(得分:2)

首先,设置您的组:创建一个公式,将该周结束日期整数转换为日期。现在,您可以在刚刚创建的新日期公式上对网站和内部组进行外部分组。在后一组中,您可以设置按月打印(组专家 - &gt;选项 - &gt;“此部分将打印:每个月”)。

接下来,只需对{table.close_balance}上的每个内部组进行最大摘要。 (插入摘要 - &gt;字段汇总:{table.close_balance},计算此摘要:最大值,汇总位置:第2组{@DateFormula})。

现在每个组页脚2将显示整个月以及每个站点当月的最大每周结束余额。

好的,让我们再试一次。

除了上面的两个组(站点和月),您还可以使用相同的公式按周添加最终内部分组。所以G1 - 站点,G2 - 月和G3 - 周。

创建一个公式{@reset},可以放在Group Header 2中并重置变量'max'。

whileprintingrecords; numbervar max := -1

创建另一个公式,该公式可放置在组页脚3中,以便在适当时更新“max”变量。

whileprintingrecords;
numbervar max;
local numbervar weeklySum := sum();
if max < weeklySum then max := weeklySum

最后,创建第三个公式,可以放在组尾2中以显示每月最大摘要。

whileprintingrecords;
numbervar max

答案 1 :(得分:0)

我认为您可以使用总计而不是变量来执行此操作。

写一个公式TotalClosingBal

Sum({ClosingBal}, {WeekEnd})

然后创建一个总计:

  • 评估TotalClosingBal
  • 最高
  • 更改群组{WeekEnd}
  • 重置更改群组{Month}