Sql server 2008 SQL:如何在派生表中声明变量?
我试图创建一个逗号分隔的列表,并使用一个派生表。但是我不能在左外连接中声明变量。。。我该怎么做Sql server 2008 SQL:如何在派生表中声明变量?,sql-server-2008,left-join,declare,derived-table,Sql Server 2008,Left Join,Declare,Derived Table,我试图创建一个逗号分隔的列表,并使用一个派生表。但是我不能在左外连接中声明变量。。。我该怎么做 LEFT OUTER JOIN ( DECLARE @String AS VARCHAR(MAX) = NULL SELECT @String = COALESCE(@String + ', ','') + Name FROM MyTable SELECT @Strin
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关键字上给了我一个错误,即语法不正确
谢谢 不能在派生表中声明变量
但是您可以在语句之外声明它,并以与示例中相同的方式使用它您不能在派生表中声明变量
但是您可以在语句之外声明它,并以与您在示例中相同的方式使用它您的要求没有意义,因为变量实际上不能在表变量中使用。如果要在table变量之后使用它,它仍然没有意义。。。您是否希望该变量有多个实例,每个不同的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让我有点害怕。此联接中已经涉及了多少个表?您的要求没有意义,因为该变量实际上不能在表变量中使用。如果要在table变量之后使用它,它仍然没有意义。。。您是否希望该变量有多个实例,每个不同的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让我有点害怕。此联接中已涉及多少个表?我尝试过,但它在+名称下加下划线,给出了错误:在预期条件的上下文中指定了非布尔类型的表达式。哪个表有Name列?否,一定没有问题:选择@String=COALESCE@String + ', ',MyTable中的+Name必须累计Name列中的所有值。当然,尝试只执行这个声明字符串的语句。当执行DECLARE@string AS VARHCARMAX=NULL时,选择@string=COALESCE@String+“,”,+MyTable中的名称它执行得很好…太好了!下一步是将您的计算字符串添加到派生表中:左外连接SELECT@string,Col1 FROM MyTable GROUP BY Col1,因为T8I尝试了这一点,并在+名称下面加下划线,给出错误:在需要条件的上下文中指定了非布尔类型的表达式。哪个表具有名称列?否,必须没有问题:选择@String=COALESCE@StringMyTable中的+'、'、+Name必须累计Name列中的所有值。当然,尝试只执行这个声明字符串的语句。当执行DECLARE@string AS VARHCARMAX=NULL时,选择@string=COALESCE@String+“,”,+MyTable中的名称它执行得很好…太好了!下一步是将您的计算字符串添加到派生表中:左外连接SELECT@string,Col1 FROM MyTable GROUP BY Col1,因为T8I在它是8的时候不会存在。。。更好的办法是先提出一个观点,然后从那里出发吗?几乎没有足够的信息来回答这个问题。也许您可以将整个查询作为一个单独的问题发布,包括表结构、一些示例数据和所需的结果,并寻求帮助以使其更优化。对我来说,8表连接似乎有点高,除了一个与DW非常相关的明星连接。我不会说谎,现在是8。。。更好的办法是先提出一个观点,然后从那里出发吗?几乎没有足够的信息来回答这个问题。也许您可以将整个查询作为一个单独的问题发布,包括表结构、一些示例数据和所需的结果,并寻求帮助以使其更优化。8表连接对我来说似乎有点高,除了与DW相关的星形连接。