我正在尝试从表中获取多个值,并将其作为逗号分隔的值存储在单个变量中,以便可以在另一个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变量中。而是仅存储第一个返回值。
我不确定是否要丢失一些东西。任何帮助,将不胜感激。
提前谢谢.. !!
答案 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)