【发布时间】:2015-10-07 20:24:30
【问题描述】:
我正在 Cognos 报表工作室的“id”列上的 2 个表 A 和 B 上执行完全外部联接。两个表都有 id 列的多条记录。我的要求是我必须计算每个表中的记录数并将其显示在图表上。但是当我计算记录时,它会乘以记录并产生笛卡尔积。
A.id ---- B.id
1 ------ 1
2 ------ 2
2 ------ 2
3 ------ 4
4 ------ 5
5 ------ 6
当我数数时,我得到的是:
A.id ---- B.id ---- Count(A.id)---- Count(B.id)
1 ---- 1 ---- 1 ---- 1
2 ---- 2 ---- 4 ---- 4 (Am expecting 2 for these kind of records)
3 ---- null ---- 1 ---- null
4 ---- 4 ---- 1---- 1
5 ---- 5 ---- 1 ---- 1
null ---- 6 ---- null ---- 1
我需要在图表中显示表 A 和表 B 中的记录总数。由于这会导致叉积,因此图形值没有给出正确的结果。任何人都可以建议如何在第二条记录中避免这种笛卡尔积吗?请建议这是否可能?
【问题讨论】:
-
你能澄清一下问题吗?第二张表代表什么?那是来自联接的派生查询吗?是否为查询启用了自动分组和汇总?
-
感谢约翰调查此事。自动分组和汇总设置为自动。第二张表是加入后的结果。加入后,我正在计算每个表中的记录。如果表 A 中有 2 条 id 相同的记录,表 B 中有 4 条 id 相同的记录,则连接后得到 8 条记录,这意味着它正在执行笛卡尔积。我应该将表 A 计为 2,将表 B 计为 4。这是因为我有重复项并且查询中没有唯一列吗?
-
您是否收到有关交叉产品的警告?您是否定义了 2 个查询主题之间的连接?
-
安德鲁,我没有收到任何关于交叉产品的警告消息。只是输出不正确。是的,我已将查询主题之间的完全外连接定义为 0-n 和 0-n。
标签: cognos cartesian-product full-outer-join