我有一份水晶报告,它有一个基于两个字段的分组声明
现在Crystal报告工作,它按“公司名称”进行分组,但不按“帐户类型”分组。我有两种类型的帐户,“常规和高级”。一家公司与我们有两种类型的帐户,它可以定期而非溢价。您认为这是什么问题。
我是水晶报道的新手。我熟悉SQL虽然。我看到的差异是
在这种情况下,我首先按公司名称分组,然后按帐户状态分组。任何见解都会有所帮助。
请注意,我从Crystal Report生成了等效的SQL语句。那个查询没问题,除了没有group by语句。我自己添加了这些和聚合列,并且我得到的结果与我在Crystal中得到的结果相同(但是SQL报告更准确,因为它在两个字段中组合而不仅仅是一个)。
编辑:示例日期。每个公司可以拥有相同类型的多个帐户。我希望聚合“公司名称”和“帐户类型”,以便数据列出如下。
+----+--------------+-------------+------+
| ID | Company Name | AccountType | Sale |
+----+--------------+-------------+------+
| 1 | ABC | I | 500 |
| 2 | ABC | I | 600 |
| 3 | ABC | O | 1000 |
| 4 | ABC | O | 2000 |
| 5 | ABC | O | 3000 |
| 6 | XYZ | O | 2500 |
| 7 | LMN | O | 3400 |
+----+--------------+-------------+------+
我想从上表中输出
+--------------+-------------+------+
| Company Name | AccountType | Sale |
+--------------+-------------+------+
| ABC | I | 1100 |
| ABC | O | 6000 |
| XYZ | O | 2500 |
| LMN | O | 3400 |
+--------------+-------------+------+
答案 0 :(得分:4)
更新以纳入评论讨论和修订问题:
解决此问题有两个基本选项:
1)修改SQL以执行所需的聚合。
2)在Crystal中,添加两个组,一个用于公司,另一个用于帐户类型。
在Crystal中添加组之前,您有几个标准部分,包括报表头,页眉,详细信息,报表页脚和页脚。
如果不执行分组,数据库中读取的每一行都将显示在详细信息部分中(从技术上讲,每行重复整个详细信息部分)。
当您添加第一个组(公司)时,Crystal会在“详细信息”部分之前添加“组头”#1,在“详细信息”部分之后添加“组头”#1。
如果此时运行报告,对于每个公司,Crystal将在与该公司关联的每组详细记录之前显示组标题,然后将显示该公司的所有详细记录,最后,将显示该公司的组页脚。
通常,组头用于显示不需要为每个详细记录重复的分组的公共信息。在此示例中,我们可以显示公司名称以及与公司相关的其他信息。
同样,组页脚通常用于显示该组中显示的所有详细记录的摘要信息。
在这种情况下,我们可以添加一个总结销售额的汇总,该汇总金额将是该公司的总销售额,无论帐户类型如何。
添加第二组后,它将对原始组执行子分组。
当添加第二个组时,Crystal会在Group Header#1下方和详细信息上方放置一个Group Header#2,并将组页脚#2直接放在详细信息下方和Group Footer#1上方。
此时,您的报告格式类似于以下内容:
Group Header #1 (Company)
Group Header #2 (Account Type)
Details (the individual sale records)
Group Footer #2
Group Header #1
在这种情况下,对于每个公司,我们希望按帐户类型对详细信息记录进行分组。因此,如果需要,我们可以向Group Header#2添加描述帐户类型的信息,我们可以将聚合添加到Group Footer#2,以显示公司内每种帐户类型的总计。
现在,如果只需要显示每个公司中每个帐户类型的总计,那么我们需要在报告中显示的唯一部分是Group Footer#2。此页脚中提供了所有字段(公司,帐户类型,销售总计),因此我们不需要任何其他区域。