我想通过在源限定符中运行查询来通过SQL中的交叉连接替换Informatica中的常规连接吗?

时间:2018-01-07 20:12:17

标签: sql join transformation informatica

使用表dev和remote中添加的Dummy字段完成了informatica中的正常连接。 dev表中的列是database_region,site_cd,dev_nm, dev_locn_id,dev_typ,bond_ind,FRM_ID,AP_ID,DUMMY_DEV 和远程列是node_id和DUMMY_REMOTE。 我们使用条件DUMMY_DEV = DUMMY_REMOTE创建交叉连接,将主列声明为node_id和DUMMY_REMOTE。 但是,根据客户要求,我们在sql中创建了Cross Join。为了实现我正在使用SQL查询运行交叉连接。当我比较Informatica的Normal Join和SQL的Cross Join之间的Row计数和数据时,结果完全相同。但是行的顺序是不同的。 任何人都可以建议我怎样才能达到完全相同的结果? 以下是我正在使用的查询。

select database_region,site_cd,dev_nm,
dev_locn_id, dev_typ, bond_ind , FRM_ID, AP_ID ,
node_id
from dev  cross join 
remote   ;

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 来自Informatica Normal Join的结果

01  AGSTAR      AGSTARXAHA1-AGST        AUGUSTA/80MVC7B/N65     C7 /M           Y   01                          20MEG
01  AGSTAR      AGSTARXAHA1-AGST        AUGUSTA/80MVC7B/N65     C7 /M           Y   01                          20MEG
01  AGSTAR      AGSTARXAHA1-AGST        AUGUSTA/80MVC7B/N65     C7 /M           Y   01                          20MEG
01  AGSTAR      AGSTARXAHA1-AGST        AUGUSTA/80MVC7B/N65     C7 /M           Y   01                          20MEG

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx 来自informatica的交叉加入结果

01  AGSTAR      AGSTARXAHA1-AGST        AUGUSTA/80MVC7B/N65     C7 /M           Y   01                          15MEG
01  AGSTAR      AGSTARXAHA1-AGST        AUGUSTA/80MVC7B/N65     C7 /M           Y   01                          15MEG
01  AGSTAR      AGSTARXAHA1-AGST        AUGUSTA/80MVC7B/N65     C7 /M           Y   01                          15MEG
01  AGSTAR      AGSTARXAHA1-AGST        AUGUSTA/80MVC7B/N65     C7 /M           Y   01                          20MEG

对于提供四个输出行的演示,因为交叉连接会导致创建100 000行。

1 个答案:

答案 0 :(得分:0)

评论太长了。

SQL表代表无序集。结果集 - 没有order by时 - 同样代表无序集。

您可以在同一数据中,在同一数据库中运行相同的查询两次,并以不同的顺序获取行。 SQL并不关心。

如果您希望按特定顺序排列结果,请使用order by。如果您希望始终以相同的顺序返回结果,请使用order by