【发布时间】:2021-01-28 07:18:38
【问题描述】:
我有一个SELECT 可以生成值列表的语句:
DECLARE @ValueList varchar(Max);
SELECT @ValueList = COALESCE(@ValueList + ',', '') + CAST(Val AS varchar(max))
FROM
(SELECT TOP (100) PERCENT tblSampleTable.SomeIDNumber AS Val
FROM tblSampleTable) AS ValuesThisYear
PRINT @ValList
这会返回一个包含类似值的列表
val1,val2,val4,val9,
等等,然后我可以输入存储过程,或者以其他方式管理。
现在我想让查询被评估为动态的值列表,可能传入或来自另一个存储过程,类似于这样:
DECLARE @ValueList varchar(Max);
DECLARE @TSQL varchar(Max);
SET @TSQL = {stored proc to get base query}
SELECT @ValueList = COALESCE(@ValueList + ',', '') + CAST(Val AS varchar(max))
FROM
(@TSQL) AS ValuesThisYear
PRINT @ValList
我知道包含@TSQL 的语法是错误的,而这正是我想要找出的。我查看了许多线程并尝试了许多方法,但仍然无法合并此动态部分。
棘手的部分似乎是列表的制作(COALESCE 和 CAST 语句),我将@ValList 合并为返回字符串的一部分。
任何帮助将不胜感激!
【问题讨论】: