そのクエリをどこでどのように使用するかに応じて、使用できます
SQLCMD 変数
:setvar FKFIELD field_name
SELECT
ad.id
, ad.@fk_field
, a1.@jnktn_field
FROM @tblname tbl LEFT JOIN @jnktn_tbl jnktn ON tbl.$(FKFIELD)=jnktn.field
WHERE ad.FK1 <> isnull(a1.ID,0)
EXECUTE ステートメント
EXEC('SELECT
ad.id
, ad.@fk_field
, a1.@jnktn_field
FROM @tblname tbl LEFT JOIN @jnktn_tbl jnktn ON tbl.' + @fk_field +'=jnktn.field
WHERE ad.FK1 <> isnull(a1.ID,0)')
複数の JOIN 句
SELECT
ad.id
, ad.field
, a1.field
FROM @tblname tbl
LEFT JOIN @jnktn_tbl jnktn ON tbl.Field1=jnktn.field and @fk_field = 'fieldName1'
LEFT JOIN @jnktn_tbl jnktn ON tbl.Field2=jnktn.field and @fk_field = 'fieldName2'
LEFT JOIN @jnktn_tbl jnktn ON tbl.Field3=jnktn.field and @fk_field = 'fieldName3'
WHERE ad.FK1 <> isnull(a1.ID,0)
更新: この最後の例では、クエリを正しく行うために少し努力が必要であり、正確な要件によってはまったく機能しない可能性があります。NULL
アイデアは、参照されるすべてのテーブルに結合し、変数で指定されたキーを持つテーブルを除いて、これらのテーブルのすべてのフィールドを設定することです。