2つのテーブルAとBがあり、Cと呼ばれる別のテーブルを除いて、どの列がキーであるかわからない動的列があります。
Cテーブルは、テーブルAおよびBのキー列がどの列であるかを指定します。1つ以上のキー列が存在する場合があります。
私の質問は、キー列がBの同じキー列と等しいAからすべての行を選択するようなクエリをどのように生成するのでしょうか?
私が持っていたアイデアの1つは、sp_executesqlを使用して実行するテキストクエリを作成することでしたが、クエリを生成する方法についていくつかの良いアイデアが必要です。
まず、テーブルAとBのテーブルCから、宣言されたテーブル@keyColumnsまでのすべてのキー列を選択します。
次に、whileループを使用して、@ keyColumns内のすべてのキー列を調べ、クエリを生成して、sp_executesqlで実行します。
例えば:
UPDATE A
SET ...
FROM B INNER JOIN A
ON A.keycol1 = B.keycol1 AND A.keycol2 = B.keycol2 AND ...
明確にするために、CテーブルはテーブルBのキー列のみを指定し、それからAが同じキー列を持っていることがわかります。
しかし、これを解決するためのより良い方法があるかどうか知りたいです。