使用不同的值连接SQL中的行
问题描述:
你好,我有一个问题在不同的表中增加一个字段分隔符,例如。基本上我想连接具有相同DocumentsID的所有值,并且必须具有不同的fieldid。如果它没有fieldid,请将其留空。希望这是有道理的。第一次在这里问。再次感谢。使用不同的值连接SQL中的行
DocumentsID Field ID Values
1 190 Jordan
1 191 Kobe
1 192 Rose
2 191 Kobe
预期结果
DocumentsID Values
1 Jordan; Kobe; Rose
2 Kobe
答
有一个同样的问题here,你可以参考。
我修改了接受的答案中使用的查询,以适合您的示例。
set nocount on;
declare @YourTable table (DocumentID int, FieldID int, [Values] varchar(50))
insert into @YourTable VALUES (1,190,'Jordan')
insert into @YourTable VALUES (1,191,'Kobe')
insert into @YourTable VALUES (1,192,'Rose')
insert into @YourTable VALUES (2,191,'Kobe')
set nocount off
SELECT DISTINCT
t1.DocumentID
,STUFF(
(SELECT
', ' + t2.[Values]
FROM @YourTable t2
WHERE t1.DocumentID=t2.DocumentID
ORDER BY t2.[Values]
FOR XML PATH(''), TYPE
).value('.','varchar(max)')
,1,2, ''
) AS [Values]
FROM @YourTable t1
GROUP BY t1.DocumentID,t1.[Values]
+0
注意事项 - 如果从GROUP BY子句中删除“t1。[values]”,则不需要使用“DISTINCT”(在这种情况下也是不必要的)。进行这些更正将使查询更高效。 – GarethD 2014-10-29 08:07:21
而你在哪里试图解决它的代码? – SubqueryCrunch 2014-10-29 07:31:33
[以前的答案我已经完成](http://*.com/a/10381975/1048425)做了一些比大多数解释如何使用'FOR XML'连接行到列的实际工作。 – GarethD 2014-10-29 08:05:56