将字符串附加到SQL Server中具有匹配ID的现有记录?

时间:2017-03-23 05:40:05

标签: sql sql-server sql-server-2008 sql-server-2008-r2

我有一个表格,如果id1和id2列具有相同的值,我想附加名称列。

http://sqlfiddle.com/#!3/8be48/1

输入表

id1 id2 name
1   1   a
1   1   b
2   2   c
2   2   c
3   3   d
3   3   e
3   3   f

预期产出

id1 id2 name
1   1   a | b
2   2   c | c
3   3   d | e | f

我尝试将id1和id2连接在一起并连接名称列,但它没有用完。

select id1, id2, name + ' | ' + name
from testdata
group by id1, id2; 

1 个答案:

答案 0 :(得分:0)

Use STUFF String function :

CREATE TABLE #table(id1 INT, id2 INT , name VARCHAR(10))
INSERT INTO #table(id1 , id2 ,name )
SELECT 1,1,'a' UNION ALL
SELECT 1,1,'b' UNION ALL
SELECT 2,2,'c' UNION ALL
SELECT 2,2,'c' UNION ALL
SELECT 3,3,'d' UNION ALL
SELECT 3,3,'e' UNION ALL
SELECT 3,3,'f' 

SELECT T1.id1 id1, T1.id2 id2 , STUFF( ( SELECT ' | ' + name FROM #table T2   
WHERE T1.id1 = T2.id1 AND T1.id2 = T2.id2 FOR XML PATH('') ) ,1,2,'') 
FROM #table T1
GROUP BY id1 , id2