1

我正在尝试从我的数据库(Sage CRM)中的一个表中创建一个水晶图表(条形或线形)。

记录如下

CustomerId      Date            Invoice              Amount

1234           3/4/2013        Cust Invoice           3322.00   
1234           3/4/2013        Payment                2445.00  
1234           4/5/2013        A/c transaction         322.00  
1234           5/6/2013        interest                 32.00 
1234           6/6/2013        payment                 643.00 

所以我想要一份符合以下标准的报告

  1. 仅按月份分组的过去 12 个月的记录
  2. 只有付款、发票和利息的发票类型
  3. 计算所有发票金额的移动余额,即

(当显示 2012 年 7 月的信息时,移动余额将是该日期之前所有发票的总和。没有此字段,我可以使用选择专家创建图表没有问题,但我现在不知道该怎么做)

我应该使用交叉表吗?如果是这样,我将如何选择只显示我想要的发票和我想要的日期范围?

4

3 回答 3

1

在这个问题上花了将近一周的时间后,在专家的大力帮助下,我终于找到了解决方案。

为了创建一个金额,该金额是自一开始以来公司、月份和发票类型的所有记录的总和,同时仅显示去年的记录,我创建了一个 SQL 命令

Select 
  //All of the fields for the report,
  movingBalance.Amount
from myInvoiceTable as mit
  <join to any other tables for the report>
  left join (
    select customerID, sum(amount) as Amount
    from myInvoiceTable
    where Record_Type in ('Payment', 'Invoice','Interest')
      and Date < {?Report Start Date}
    group by customerID) movingBalance
   on mit.customerID = movingBalance.customerID
where mit.RecordType in ('Payment', 'Invoice','Interest')
  and mit.Date >= {?Report Start Date}
  and mit.Date <= {?Report End Date}

使用命令有几个技巧:

  1. 出于性能原因,您通常希望在单个命令中包含报告的所有数据。避免连接多个命令或将一个或多个表连接到一个命令。
  2. 过滤命令中的数据,而不是报告中的 Select Expert 中的数据。
  3. 在命令编辑器中创建任何参数,而不是在主报告中。在报告中创建的参数在命令编辑器中不起作用。

这已经成功了。

于 2013-07-31T11:59:18.540 回答
0

在报表中创建日期参数以过滤掉现在获取时的记录,当您运行报表时留下您需要的数据。

现在您可以使用公式字段来处理报表内的数据。

对我来说,编写存储过程是一项有点繁重的任务,因为您可以操作报表中的数据。我无意不尊重任何人的意见,但坦率地说这是我的意见。

于 2013-07-31T08:50:11.327 回答
0

在这种情况下,我会推荐以下 Rachsherry。

对于标准第 1 部分和第 2 部分,我认为使用公式可能更容易,而不是使用存储过程。

对于发票,右键单击发票字段,然后在“抑制”选项旁边的常用选项卡中的“格式字段”有一个公式按钮,输入以下...

 IF {YourInvoiceField} IN ["Payment", "Invoice", "Interest] THEN FALSE ELSE TRUE

对于您的日期要求,您需要使用选择公式...该代码应如下所示

 {YourDateHere} > DateAdd ("yyyy", -1, CurrentDate) AND {YourDateHere} < CurrentDate

上面的代码主要查看报告运行之日和一年前之间的日期。

对于您的移动平衡,您应该能够通过此处的指南实现这一目标

编辑-对此的替代方法是使用参数字段(我个人不喜欢)这只是意味着每次刷新报告时都必须输入参数,它们是不言自明的,但您可以在此处找到指南

于 2013-07-31T09:52:55.007 回答