0

我有一个通过 SSIS 合并联接(左联接)进行的查询。它只连接在 ON 中指定的列。我该怎么做才能考虑使用 AND 的其他列?

SELECT Col1, Col2
FROM Table1
... many joins..
LEFT JOIN Table5 T5 ON T5.Col1 = T1.Col1
                    AND T5.Col2 = 'Y'
                    AND T5.Col3 = '1'
                    AND T5.Col4 <= T1.Col2
LEFT JOIN Table6 T6 ON T6.Col1 = T5.Col5
                    AND T6.Col2 LIKE '%DD%

这不可能与合并加入有关吗?还有什么其他方法可以用来解决这个问题?我可以通过执行 SQL 来完成整个查询,但这不是我想要做的。

4

1 回答 1

0

只需按照您在问题中的条件即可。

AND T5.Col2 = 'Y'
AND T5.Col3 = '1'
AND T6.Col2 LIKE '%DD%

使用连接到来自 T5/T6 的数据的条件拆分,然后将条件拆分的输出连接到合并连接的左连接输入,这些很容易实现。

AND T5.Col4 <= T1.Col2

然而,这有点棘手,因为您无法在 Merge 连接中进行范围比较。在不诉诸 T5 上的查找逻辑的情况下完成此操作的唯一方法是在执行合并连接时跳过此条件,并将合并连接的输出再次连接到条件拆分,并在其中的列之间进行比较以过滤掉不需要的行。

于 2014-07-09T14:23:05.900 回答