查询结果列在SP中

时间:2010-07-14 19:51:15

标签: sql-server stored-procedures sql-server-2000

我确信这是在某处讨论的,但在搜索了一段时间之后我找不到它。

我正在构建SQL 2000的存储过程,我需要构建一个可以在IN函数中使用的数字列表。

查询看起来像这样

SELECT DISTINCT type FROM dbo.table WHERE building = @currentBuilding

这通常会在1-5个结果之间返回,我正在寻找一种方法将它放入nvarchar或其他东西。

我想梦想有一个简单的方法可以做到这一点,因为它在一列中,但我有一种感觉,我将最终迭代结果。

作为一方,nvarchar是否使用正确的变量?有没有更好的方法来存储这些会使IN更快地工作?

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试类似:

declare @All nvarchar(1000)
SET @All=null

SELECT
    @All=ISNULL(@All+', ','')+CONVERT(varchar(10),d.value)
    FROM (SELECT 1 AS Value UNION SELECT 22 UNION SELECT 333 UNION SELECT 4444) d

PRINT @All

输出:

1, 22, 333, 4444

这是你可以使用的:

SELECT
    @All=ISNULL(@All+', ','')+CONVERT(varchar(10),d.type)
    FROM (SELECT DISTINCT type 
              FROM dbo.table 
              WHERE building = @currentBuilding
         ) d