我正在将SQL语句创建为变量中的字符串,它应该以Deadline_week_test的形式返回一个新列,但它错误地引用了语句中的列名。
DECLARE @ColName varchar(max) = 'Deadline'
DECLARE @test_column varchar(max) = 'CASE
WHEN DATEPART("dw",'+@ColName+') = 1 THEN "Sunday"
WHEN DATEPART("dw",'+@ColName+') = 2 THEN "Monday"
WHEN DATEPART("dw",'+@ColName+') = 3 THEN "Tuesday"
WHEN DATEPART("dw",'+@ColName+') = 4 THEN "Wednesday"
WHEN DATEPART("dw",'+@ColName+') = 5 THEN "Thursday"
WHEN DATEPART("dw",'+@ColName+') = 6 THEN "Friday"
WHEN DATEPART("dw",'+@ColName+') = 7 THEN "Saturday"
ELSE "NULL" END AS Deadline_week_test '
DECLARE @sql as nvarchar(max) = ('select '+@test_column+'from dbo.SalesHeader');
exec sp_executesql @sql

发布于 2022-07-12 05:56:34
将我们的双引号替换为2个单引号。
DECLARE @ColName varchar(max) = 'Deadline'
DECLARE @test_column varchar(max) = 'CASE
WHEN DATEPART(''dw'','+@ColName+') = 1 THEN ''Sunday''
WHEN DATEPART(''dw'','+@ColName+') = 2 THEN ''Monday''
WHEN DATEPART(''dw'','+@ColName+') = 3 THEN ''Tuesday''
WHEN DATEPART(''dw'','+@ColName+') = 4 THEN ''Wednesday''
WHEN DATEPART(''dw'','+@ColName+') = 5 THEN ''Thursday''
WHEN DATEPART(''dw'','+@ColName+') = 6 THEN ''Friday''
WHEN DATEPART(''dw'','+@ColName+') = 7 THEN ''Saturday''
ELSE ''NULL'' END AS Deadline_week_test '
DECLARE @sql as nvarchar(max) = ('select '+@test_column+'from dbo.SalesHeader');
exec sp_executesql @sqlhttps://stackoverflow.com/questions/72947584
复制相似问题