我试图根据条件更新表变量中的列,条件是表变量的ID不存在于不同的表中:
DECLARE @BugRep TABLE(BugCode VARCHAR(50),DevFirstName VARCHAR(50), DevLastName VARCHAR(50), BugDate VARCHAR(20), IsValid VARCHAR(1))
UPDATE @BugRep
SET IsValid = 'N' WHERE NOT EXISTS(SELECT * FROM BUG b WHERE @BugRep.BUGCODE = b.CODE)
Run Code Online (Sandbox Code Playgroud)
当我尝试编译具有这些语句的过程时,我得到一个"必须声明标量变量"@BugRep"消息.
我如何在NOT EXISTS子句中使用表变量?
我正在使用SQL Server 2008
我已经声明了一个表变量'@t',并正确执行了'INSERT-INTO-SELECT'.当我试图通过对每组行编号进行一些额外计算来查询表变量时,我在使用'@t'直接使用"必须声明变量"或使用'@t'的别名时出现"无效对象名称"错误".请提出建议.
SELECT
*,
(SELECT COUNT(*) FROM "LTV" "COUNTER"
WHERE
"COUNTER"."Collateral_ID" = "LTV"."Collateral_ID"
AND
"COUNTER"."m_il_no" = "LTV"."m_il_no"
AND
"COUNTER"."Ref_Key" <= "LTV"."Ref_Key"
GROUP BY "COUNTER"."Collateral_ID", "COUNTER"."m_il_no"
) "MIL_IDX"
FROM @t AS LTV
Run Code Online (Sandbox Code Playgroud) 这应该非常简单,但我想要做到这一点,因为我正在对一个实时数据库进行更改(它已备份).
我从CSV文件中导入了一些列值到数据库表.
现在我只想从导入的源表(查询中的S)更新目标表(查询中的T).
我收到错误: The multi-part identifier "T.account_manager_id" could not be bound.
update DADatabaseMarch2012.dbo.Campaign
set
T.[account_manager_id]=S.[account_manager_id]
,T.[campaign_status_id]=S.[campaign_status_id]
,T.[ad_manager_id]=S.[ad_manager_id]
,T.[advertiser_id]=S.[advertiser_id]
from
[zMarch12CampaignsRestore].[dbo].[March12Eom_Campaigns] S
inner join DADatabaseMarch2012.dbo.Campaign T ON S.id = T.id
Run Code Online (Sandbox Code Playgroud)