我的查询:
DECLARE @Groups VARCHAR(MAX)
SELECT
@Groups = COALESCE(@Groups + ',', '') + CONVERT(VARCHAR(5), GroupID)
FROM
[dbo].[tblGroups]
PRINT @Groups
返回
2345,6543,7854
我希望@Groups
返回'2345','6543','7854',因为我需要在另一个查询中使用@Groups
:
SELECT *
FROM MyTable
WHERE GROUP_ID IN (@Groups)
我收到错误:
Msg 245,Level 16,State 1,Line 25
时转换失败
将varchar值'2345,6543,7854'转换为数据类型int。
目前,我正在测试SQL Server中的第二个查询并收到此错误,但实际上我必须在teradata中运行第二个查询,并且必须传递来自SQL Server的查询1结果@Groups
。我想如果我能够将@Groups
作为'2345','6543','7854'返回,它应该可以解决我的问题。
请指导如何实现此目标
答案 0 :(得分:1)
或许使用表变量?
para
emphasis - foobar
subject - Barbar
*********************** 编辑 **************** *******
DECLARE @Groups TABLE (Groups VARCHAR(MAX))
INSERT INTO @Groups
SELECT CONVERT(VARCHAR(5),GroupID)
FROM [dbo].[tblGroups]
SELECT * FROM MyTable
WHERE GROUP_ID IN (SELECT *
FROM @Groups)
**** 编辑 ****
DECLARE @Groups VARCHAR(MAX)
SELECT
@Groups = COALESCE(@Groups + ',', '''') + CONVERT(VARCHAR(15), GroupID) + ''''
FROM
[dbo].[tblGroups]
PRINT @Groups
结果:
DECLARE @Tab TABLE (GroupID INT)
INSERT INTO @Tab
VALUES (2345),(6543),(7854)
DECLARE @Groups VARCHAR(MAX)
SELECT
@Groups = COALESCE(@Groups + ',', '') +''''+ CONVERT(VARCHAR(5), GroupID) + ''''
FROM @Tab
SELECT @Groups