根据某些条件更新结果集时遇到困难。一些帐号号码为空,但是根据不同的标识符进行匹配。使用IF语句更新行
我正在更新与匹配的空帐号,但不能完全得到的语法工作。我运行到错误
多部分组成的标识符“CMRR.aacount_number”无法找到
这是在几个不同的地方,我引用了其他表。
DECLARE @BatchId INT
SET @BatchId = 1030
SELECT
CMRR.id,
CMRR.account_number,
CMRR.URN
FROM
CRA_METRO2_REJECTED_RECORDS AS CMRR
WHERE
batch_id = @BatchId
IF CMRR.account_number = ''
BEGIN
UPDATE CRA_METRO2_REJECTED_RECORDS
SET CMRR.account_number = (SELECT account_number
FROM CRA_METRO2_REJECTED_RECORDS
WHERE URN = CMRR.URN
AND account_number != '')
WHERE id = CMRR.id
END
您需要在账户号码存储到一个变量供以后使用或使用'IF(EXISTS(SELECT ...))BEGIN ... END' – scsimon
错误信息是非常明确的。您在'update'语句中没有定义CMRR别名。 –
@vkp'CRA_METRO2_REJECTED_RECORDS AS CMRR'并且这个错误信息发生在'UPDATE'之前。 – Jared