对于具有0个子记录的记录摘要,返回0的计数

时间:2015-08-27 18:45:44

标签: count crystal-reports grouping

我正在使用水晶报告XI。我正在使用在我到达之前创建的SQL数据库,我无法更改表或链接结构。数据库中有4个表,我需要这个报告。

表1 - 公司||字段:CompanyIDPK,CompanyName,YearActiveIDFK

表2 - ActiveYears ||字段:YearActiveIDPK,YearNameIDFK

表3 - YearNames ||字段:YearNameIDPK,YearName

表4 - CompanyOrders ||字段:OrderIDPK,CompanyIDFK,YearNameIDFK,OrderNumber,OrderCost

我想创建一个按年份和按公司分组的报告。我希望每家公司都能显示每年的订单数量,包括当年没有订单时显示0。

我可以在报告中显示某一年内的所有公司,但是一旦我尝试开始计算,它只会显示至少有一个订单的公司。

感谢您的帮助!!!

2 个答案:

答案 0 :(得分:0)

我的猜测是这种情况正在发生,因为在您将SQL查询添加到设计器之后,Crystal只会将表添加到SQL查询中。即使您已在数据库专家中链接了表,也会发生这种情况。

我假设你有INNER JOIN的默认连接类型。可能发生的情况是,只要在CompanyOrders中的某个字段上添加“计数摘要”,Crystal就会将其添加到SQL查询中。

导致问题的原因是因为如果链接字段在两个表中,则内连接仅返回记录。如果公司在去年没有下订单,他们将不会在CompanyOrders表中有任何记录。这意味着您的SQL查询不会返回这些公司的任何记录,因为这些公司需要在两个表中都要返回记录。

解决方法是将连接类型从INNER JOIN更改为LEFT OUTER JOIN。这可以通过进入数据库专家(菜单>数据库>数据库专家),单击链接选项卡,双击从公司到CompanyOrders表的行,然后选择左外连接单选按钮来实现。 / p>

现在所有公司都会出现,但由于有些公司在CompanyOrders表中没有记录,因此订单的计数将为0。

如果这是你的问题,请告诉我。

ZMcK

答案 1 :(得分:0)

您没有说您无法创建数据库对象,因此如果可能的话,我会在SQL Server数据库中创建一个视图或存储过程,以您想要的格式返回所需的数据并将Crystal Reports从表中链接出来。