提取多个值并以逗号分隔的值形式存储在单个变量中

时间:2019-04-03 17:34:03

标签: sql-server

我正在尝试从表中获取多个值,并将其作为逗号分隔的值存储在单个变量中,以便可以在另一个select语句中将该变量用作参数。

这是SQL查询:

DECLARE @AccCode VARCHAR(MAX)
SELECT @AccCode = AccCode FROM Account WHERE (*some condition*) --returns more than 1 value
SELECT * FROM AccountSet WHERE AccCode IN (@AccCode)  

问题是从第一个选择查询返回的所有值都没有存储在@AccCode变量中。而是仅存储第一个返回值。

我不确定是否要丢失一些东西。任何帮助,将不胜感激。

提前谢谢.. !!

2 个答案:

答案 0 :(得分:0)

您可以使用FOR XML PATH()子句:

SELECT @AccCode = STUFF( (SELECT ', '+ AccCode 
                          FROM Account 
                          WHERE (*some condition*) 
                          FOR XML PATH('')
                         ), 1, 1, ''
                       )

答案 1 :(得分:0)

您可以使用COALESCE:

DECLARE @AccCode VARCHAR(MAX)
SELECT @AccCode = COALESCE(@AccCode + ',' + AccCode, AccCode) FROM Account WHERE (*some condition*) --returns more than 1 value
SELECT * FROM AccountSet WHERE AccCode IN (@AccCode)