SQL Server 2008 Management Studio连接行
我已经为此工作了大约两天,我一辈子都不明白我做错了什么。基本上,我正在尝试创建一个临时表,我已经为它合并了列。现在我正在尝试合并这些行,经过整整20个小时的搜索,我找不到解决方案。我希望有人能向我解释我做错了什么 我正在使用Microsoft SQL Server 2008管理工作室SQL Server 2008 Management Studio连接行,sql,sql-server-2008,Sql,Sql Server 2008,我已经为此工作了大约两天,我一辈子都不明白我做错了什么。基本上,我正在尝试创建一个临时表,我已经为它合并了列。现在我正在尝试合并这些行,经过整整20个小时的搜索,我找不到解决方案。我希望有人能向我解释我做错了什么 我正在使用Microsoft SQL Server 2008管理工作室 DECLARE @ThisUID int; DECLARE @ThisUIDName varchar; SELECT TOP 1 @ThisUIDName = ElementName FROM ElementN
DECLARE @ThisUID int;
DECLARE @ThisUIDName varchar;
SELECT TOP 1 @ThisUIDName = ElementName
FROM ElementNames
WHERE ElementUID = @ThisUID
;WITH CTE AS (
SELECT v.ElementUID,
'^'+a.ElementAttribute + '|' + Value1 + Value2 as Combined
FROM ElementAttributeValues v
Left JOIN ElementAttributes a
ON v.ElementAttribute = a.UID
)
SELECT *
INTO #TempTable
FROM CTE
SELECT
a.ElementUID, a.Combined
STUFF((SELECT CAST( '' as varchar(max)) + e.Combined
FROM #TempTable
WHERE e.ElementUID = a.ElementUID
FOR xml path(''), type). as a.Combined
FROM #TempTable a
ORDER BY a.ElementUID DESC
如果有人能解释我到底做错了什么,我将不胜感激。首先,我没有看到逗号,在你最后的SELECT语句的第一行后面,在a.组合之后,第二,我认为把STUFF语句的值也称为相同-。。作为a.组合-尝试使用不同的名称 因此,请尝试将此作为您的最终SELECT语句:
SELECT
a.ElementUID, a.Combined, -- add a comma at the end of this line
STUFF((SELECT CAST('' AS VARCHAR(MAX)) + e.Combined
FROM #TempTable
WHERE e.ElementUID = a.ElementUID
FOR XML PATH(''), TYPE) AS Stuffed -- use a distinct name here!
FROM #TempTable a
ORDER BY a.ElementUID DESC
我认为您没有将确切数量的参数传递给stuff函数。stuff接受4个参数。 填充字符\表达式、开始、长度、替换为\表达式
即使马克提到逗号被遗漏,额外的。类型后面还有:我猜您指的是SQL Server Management Studio,通常称为SSMS,而不是您在标题中所说的MSDN。我冒昧地为你改变了这一点这是怎么回事?您缺少STUFF的最后3个参数和一个右参数。这里少了一些东西。