在 Cognos 中创建重复/循环表

问题描述 投票:0回答:1

我需要创建一个具有重复值的纬度/经度坐标表,以便计算所有位置之间的距离。

在数据库中我有以下字段可供使用:

位置代码 纬度 经度
ABC123 39.426413 -77.458716
DEF456 25.708686 -80.378430
ZYX123 38.734117 -77.473075

我想做的是让每个位置在第 1 列中重复,第 2 列包含所有其他位置。

位置代码1 位置代码2 纬度 1 隆1 纬度 2 隆2
ABC123 ABC123 39.426413 -77.458716 39.426413 -77.458716
ABC123 DEF456 39.426413 -77.458716 25.708686 -80.378430
ABC123 ZYX123 39.426413 -77.458716 38.734117 -77.473075
DEF456 ABC123 25.708686 -80.378430 39.426413 -77.458716
DEF456 DEF456 25.708686 -80.378430 25.708686 -80.378430
DEF456 ZYX123 25.708686 -80.378430 38.734117 -77.473075

有没有办法通过 Union 或 Join 来获得这种查询设置?

我尝试了几种不同类型的连接,但似乎没有出现我想要的结果。 非常感谢对此的任何帮助。

loops repeat cognos
1个回答
0
投票

这不是循环。 您没有使用结构化编程来解决问题。 您正在使用处理数据的 Cognos Analytics。 因此,您需要的是一种将数据集适当地连接到自身的方法。

使用

CROSS JOIN
,也称为笛卡尔连接。 这是一种不以任何方式关联表的联接。 所以而不是像......

SELECT A.*
, B.*
FROM A
  INNER JOIN B ON B.ID = A.ID

...你想要这个...

SELECT A.*
, B.*
FROM A
  CROSS JOIN B

在 Cognos Analytics 报告中对此:

假设您有一个名为

Query1
的查询。

  1. 复制查询1。 查询 2 已创建。
  2. 创建一个新查询(Query3)。
  3. 向 Query3 添加联接。
  4. 将 Query1 和 Query2 拖到通向连接的框上。
  5. 打开Query3并根据需要添加数据项。

注意您没有定义连接。

现在,Cognos 中的一个设置可能会阻止您执行此操作。 如果您收到一条消息,指出不允许交叉连接,则您需要做一些额外的工作。

  1. 在查询 1 和查询 2 中,创建一个名为
    joincol
    的数据项并使用表达式
    'a'
  2. 打开通向 Query3 的联接并在 joincol--joincol 上创建联接。
© www.soinside.com 2019 - 2024. All rights reserved.