我已经制作了一个存储过程,并在下面收到错误消息,不知道为什么。我一直在寻找一些答案,并在办公室与其他一些人在一起,但他们都不确定这个问题。希望有人在这里遇到同样的问题并知道解决方案。
Msg 116, Level 16, State 1, Procedure Name_Stored_Procedure,
Line 113 Only one expression can be specified in the select list
when the subquery is not introduced with EXISTS.
这是我的代码
Set @SQLstring =
'Update #TempTable set Col1' + case when len(Convert(Varchar, (4+@counter)))=1
then '0' else '' end
+ Convert(Varchar,(4+@counter)) + '=''' +
(select @Year, @Month,
Convert(Varchar,count(distinct Table.Column1))
from Databse.Table
where DATEPART(yy,Time) = @Year
and DATEPART(mm,Time) = @Month
and Table.Column2 = @Column2 and Column3 in ('X','Z','Y - A'))
+''' where row = ' + CONVERT(varchar,10+@somevariable * 12)
exec('' + @SQLstring +'')
答案 0 :(得分:2)
如果您要构建一个SQL字符串并使用动态SQL执行它,那么您需要将其视为字符串
Set @SQLstring =
'Update #TempTable set Col'
+ case when len(Convert(Varchar, (4+@counter)))=1 then '0' else '' end
...
在内部选择中,从结果中删除@year, @month
+ ( select Convert(Varchar,count(distinct Table.Column1)) from databse.Table....
答案 1 :(得分:0)
在单独的选择查询中,将年份,月份计入以下部分。
(select @Year, @Month,
Convert(Varchar,count(distinct Table.Column1))
from Databse.Table
where DATEPART(yy,Time) = @Year
and DATEPART(mm,Time) = @Month
and Table.Column2 = @Column2 and Column3 in ('X','Z','Y - A'))
答案 2 :(得分:0)
选择CONCAT(@ year,@ monmon,convert ....)