以下のSQLは次のコンテキストで正常に動作します:SQL Server SELECTステートメントはSETステートメント内で動作しますが、それ自体では失敗します。
USE ThisDB
UPDATE guest.TABLE2
SET this_var = (SELECT count(T1.key_field)
FROM ThisDB..TABLE1 T1
WHERE T1.key_field = guest.TABLE2.keyfield
AND T1.date_field between (DATEADD(DAY, -7, guest.TABLE2.other_date)) and guest.TABLE2.other_date)
をしかし、それだけで、SELECT
文は(下)エラー
マルチパート識別子「guest.TABLE2で失敗します。キーフィールド 'を縛ることができませんでした。 (4104)
SELECT
count(T1.key_field)
FROM
ThisDB..TABLE1 T1
WHERE
T1.key_field = guest.TABLE2.keyfield
AND T1.date_field BETWEEN (DATEADD(DAY, -7, guest.TABLE2.other_date))
AND guest.TABLE2.other_date
selectステートメントでguest.Table2に参加していないためです。 –
これは* correlation *と呼ばれます。内部クエリは外部クエリに関連付けられます。 – shawnt00
元の質問に答えられない回答を正しい回答として選択しました –