[请帮助我发现错误。我认为这是由于撇号引起的,但我不知道如何纠正。
我的代码返回错误:
Msg 156,第15级,状态1,第3行关键字“或”附近的语法不正确。
Use YEAR_TO_DATE;
Declare @policy NVARCHAR(MAX);
Declare @account_list NVARCHAR(MAX);
Declare @sql NVARCHAR(MAX);
Set @policy ='TTY%';
Set @account_list='18000,19000';
Set @sql =
'Select
case
when [Debit_Account] in ('+@account_list+') and ([policy1] like '+@policy+' or [policy2] like '+@policy+' or [policy3] like '+@policy+') then -[Amount]
when [Credit_Account] in ('+@account_list+') and ([policy1] like '+@policy+' or [policy2] like '+@policy+' or [policy2] like '+@policy+') then [Amount]
else 0
end as [Amount]
from CTGS
where [Debit_Account] in ('+@account_list+') or [Credit_Account] in ('+@account_list+')';
EXEC sp_executesql @sql;
您忘了在动态SQL字符串中添加字符串定界符引号。