1

我正在使用 Crystal Reports Developer Studio 创建一个报告两个不同表的报表,让它们分别为“ATable”和“BTable”。对于我最简单的任务,我想使用 Total Running Fields 报告每个表的计数。我为 ATable(称为 ATableTRF)创建了一个,当我将它发布到我的报告上时,会发生以下情况:

1)SQL查询(Show SQL Query)显示:

SELECT "ATABLE"."ATABLE_KEY"
FROM   "DB"."ATABLE" "ATABLE"

2) 读取的总记录数是 ATable 中的记录数。

3)我得到的数字是正确的(ATable 中的总记录)。

BTableTRF 也是如此,如果我删除 ATableTRF,我会得到:

1)SQL查询(Show SQL Query)显示:

SELECT "BTABLE"."BTABLE_KEY"
FROM   "DB"."BTABLE" "BTABLE"

2) 读取的总记录数是 BTable 中的记录数。

3)我得到的数字是正确的(BTable中的总记录)。

当我将这两个字段都放在报告中时,问题就开始了。然后发生的事情是我一个接一个地得到两个查询(因为表格没有在水晶报表中链接):

SELECT "ATABLE"."ATABLE_KEY"
FROM   "DB"."ATABLE" "ATABLE"

SELECT "BTABLE"."BTABLE_KEY"
FROM   "DB"."BTABLE" "BTABLE"

并且读取的记录数量远远大于每个表 - 它不会停止。我会验证它的 count(ATable)xcount(BTable) 但这会超出我计算机的限制(可能 - 一个大约 300k 行,另一个大约 900k 行)。

我只想报告这两个表的计数。不需要交互 - 但水晶以某种方式强制交互。

任何人都可以帮忙吗?

谢谢!

4

2 回答 2

1

除非有一些连接描述两个表的关系,否则结果将是笛卡尔积。尝试仅使用两个子查询(通过 SQL 命令或作为单独的 SQL 表达式)来获取行数。前任:

select count(distinct ATABLE_KEY) from ATABLE

如果您对这些表中除了行数之外的任何其他内容不感兴趣,那么就没有理由将所有这些行放入 Crystal 中——最好在 RDBMS 上完成繁重的工作。

于 2012-01-31T14:12:02.897 回答
0

您可以联合这两个查询。这将为您提供一个记录集,其中包含来自每个查询的行一次。

于 2012-08-09T13:52:41.763 回答