MS SQL Server 2008 r2複数の部分の識別子をバインドできませんでした
テーブル変数を使用するSQL関数を作成しようとしています。私は関数を作成しようとすると、エラーをスローし続けます。それは、スカラー変数@LocationUpdateを宣言する必要があると不平を言うか、またはテーブルエイリアスLUを使用すると、マルチパート識別子lu.IDがバインドできないという不満があります。
誰かが間違っていることを知っていますか?私はテーブル変数に挿入するこの1つ前のSQLステートメントを持っていて、それに何らかのエラーが発生していません。私は何か愚かなことをしている気がしますが、私はそれを見ていません。クエリの選択部分で
DECLARE @LocationUpdate TABLE (
[ID] [int] NOT NULL,
[FacilityName] [nvarchar](500) NULL,
[TrialUpdateID] [int] NOT NULL,
[StatusID] [int] NULL,
[City] [nvarchar](100) NULL,
[StateID] [int] NULL,
[Zip] [nvarchar](100) NULL,
[CountryID] [int] NULL,
[ContactName] [nvarchar](500) NULL,
[ContactPhone] [nvarchar](500) NULL,
[ContactPhoneExt] [nvarchar](500) NULL,
[ContactEmail] [nvarchar](500) NULL
)
SELECT @Return =
case when l.ContactFirstName +' ' +l.ContactLastName <> @LocationUpdate.ContactName then 1 else 0 END
+ CASE WHEN l.ContactEmail <> @LocationUpdate.ContactEmail THEN 1 ELSE 0 END
+ CASE WHEN l.ContactPhone <> @LocationUpdate.ContactPhone THEN 1 ELSE 0 END
+ CASE WHEN l.StatusID <> @LocationUpdate.StatusID THEN 1 ELSE 0 END
+ CASE WHEN l.Zip <> @LocationUpdate.Zip THEN 1 ELSE 0 END,
@Cleared = ISNULL(luh.Cleared, 0)
FROM @LocationUpdate lu, Location l
LEFT JOIN LocationUpdateHistory luh ON @LocationUpdate.ID = luh.idx
WHERE l.TrialID = @TrialID
AND l.City = @LocationUpdate.City
AND l.FacilityName = @LocationUpdate.FacilityName
も加わり、暗黙的および明示を混在させないでください。質問に記載されたエイリアスを使用しようとする試みがうまくいかなかった理由かもしれません。 –
私は今日の評判キャップを打ったので、明日私に改めて8-) –
お願いします。もしあなたの意見がまだ残っていれば私を改めてください。 –