繁体   English   中英

如何在单个Crystal报表中获得两个没有联合键的两个独立表的总和?

[英]How do I get two sums of two separate tables with no joint keys in a single crystal report?

我有两个表中的数据(请参见下面的示例)-如何创建仅显示sum(table1.column1)和sum(table2.column1)的Crystal报表(实际上是“记分卡”的更多内容),而没有其他详细信息? 当我尝试时,总和之一变得太大,表明它已包含在计算的某些内部循环中。

表格1:
列1:整数
第2栏:Varchar(100)
...

表2:
列1:整数
专栏2:Varchar(50)
...

注意- 没有联合键,表之间的唯一关系是它们与同一业务领域相关。

select t1.cnt, t2.cnt
from ( select count(*) cnt from table1 where... ) t1
, ( select count(*) cnt from table2 where... ) t2

如果您想避免使用子查询方法,那么我能想到的唯一真正的方法就是使用子报告。

我可以想到2种方式:

  1. 将每个查询放在自己的子报表中,并将它们链接到您的主报表中。
  2. 将一个查询放在主报表中,将另一个查询放在链接的子报表中。

我要警告一下,这几乎肯定会比仅使用一个查询(如Randy的回答)要慢,因为Crystal Reports的效率不如DB引擎。 这也可能比维护困难。 基本上,虽然您当然可以这样做,但我不确定是否可以

您可以使用两个SQL Expression字段。 每个字段都需要返回一个标量值。 您还可以将每个查询与主报表的查询关联(链接)。

  1. 为Table1.uid添加分组级别。 创建运行总计Table1Sum,在Table1.Column1上求和,更改组Table1.uid时,永不重置。 在每个记录上,在Table2.Column1上创建一个运行中的Table2Sum总和,并在更改Table1.uid组时重置。 在报表页脚中打印两个运行总计。
  2. 将查询放在单独的子报表中。 (这就是我可能要做的。)

第一个显然需要(1)表1中的唯一键,以及(2)在页脚中打印值。 如果这些约束不起作用,则两个子报表仍应起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM