我正在尝试创建逗号分隔列表,并且我正在使用派生表。但是我无法在LEFT OUTER JOIN
中声明变量......我该怎么做?
LEFT OUTER JOIN (
DECLARE @String AS VARCHAR(MAX) = NULL
SELECT @String = COALESCE(@String + ', ','') + Name
FROM MyTable
SELECT @String, Col1
FROM MyTable
GROUP BY Col1
) AS T8
ON This = That
它在Declare
关键字上显示错误的语法错误。
谢谢!
答案 0 :(得分:2)
您无法在派生表中声明变量。
但是您可以在声明之外声明它,并以与示例中相同的方式使用它
答案 1 :(得分:2)
您的要求没有意义,因为变量无法真正在表变量中使用。如果你想在表变量之后使用它,它仍然没有意义......你是否期望变量的多个实例,对于Col1的每个不同值一次?也许你是这个意思:
LEFT OUTER JOIN
(
SELECT Col1, String = STUFF((
SELECT ',' + Name
FROM dbo.MyTable AS i
WHERE i.Col1 = o.Col1
FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'),1,1,'')
FROM dbo.MyTable AS o
GROUP BY Col1
) AS T8
ON This = That
然而,T8让我有点害怕。此联接中已涉及多少个表?