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%

これは Merge-join で行うことはできませんか? これを解決するために使用できる他の方法は何ですか? クエリ全体を実行SQLに通すこともできますが、それは私がやろうとしていることではありません。

4

1 に答える 1

0

あなたの質問にある条件に従うだけです。

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

これらは、T5/T6 からのデータに接続された条件付き分割を使用して実装し、条件付き分割の出力を Merge Join の左結合入力に接続することで簡単に実装できます。

AND T5.Col4 <= T1.Col2

ただし、Merge 結合では範囲比較を行うことができないため、これは少し複雑です。T5 でルックアップ ロジックに頼らずにこれを達成する唯一の方法は、マージ結合を実行するときにこの条件をスキップし、マージ結合の出力を条件付き分割に再度接続し、そこで列を比較して不要なものを除外することです。行。

于 2014-07-09T14:23:05.900 に答える