我需要创建一个具有重复值的纬度/经度坐标表,以便计算所有位置之间的距离。
在数据库中我有以下字段可供使用:
位置代码 | 纬度 | 经度 |
---|---|---|
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 来获得这种查询设置?
我尝试了几种不同类型的连接,但似乎没有出现我想要的结果。 非常感谢对此的任何帮助。
这不是循环。 您没有使用结构化编程来解决问题。 您正在使用处理数据的 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
的查询。
注意您没有定义连接。
现在,Cognos 中的一个设置可能会阻止您执行此操作。 如果您收到一条消息,指出不允许交叉连接,则您需要做一些额外的工作。
joincol
的数据项并使用表达式 'a'
。