SQL Server:将2列设置为变量表中的1个变量

时间:2016-03-28 07:18:36

标签: sql sql-server

有人可以检查此代码有什么问题吗?我已经检查了其他问题以供参考,但它仍无效。

enter image description here

declare @sourceTable varchar(500)
declare @year varchar(22)
declare @month varchar(3)
declare @test varchar(12)
declare @result varchar(8)
declare @index int

declare @string varchar(15)
set @string = (SELECT DISTINCT TOP 1 REPLACE(dbo.fn_Parsename(WHOLEROW, '|', 0), CHAR(9), '') FROM #temp1)
set @test = (select UPPER(convert(datetime,substring(@string,2,charindex('-',@string,1)-2))))
set @month =(left(@test,3))

set @year = (right(@test,5))

set @result = @month + @year
-- select @result

set @sourceTable = 'gen_048_'+@result
select @sourceTable

declare @string2 varchar(255)
set @string2 = (select convert(varchar(55),refdate)+''-''+convert(varchar(55),refcount) FROM @sourceTable)
select @string2

这是错误

  

必须声明表变量“@sourceTable”。

3 个答案:

答案 0 :(得分:2)

您需要动态查询

SET @string2 = 'select convert(varchar(55),refdate)+''-''+convert(varchar(55),refcount) FROM '
               + Quotename(@sourceTable)

EXEC (@string2) 

答案 1 :(得分:1)

你没有宣布@sourcetable,错误大声而清晰地说出来。

在开头添加:

declare @sourcetable varchar(50)

另外,我认为您需要使用动态SQL来进行此类查询和变量。

答案 2 :(得分:0)

set @string2 = (select convert(varchar(55),refdate)+'-'+convert(varchar(55),refcount) FROM @sourceTable)