2017-03-23 18 views
1

id1とid2の列に同じ値がある場合、名前の列を追加する表があります。SQL Serverで一致するIDを持つ既存のレコードに文字列を追加しますか?

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; 
+0

なぜID1とID2が同じ値を持っていますか?おそらくサンプルには(2,3、 'g')タプルと(2,3、 'h')タプルもあるはずです。 –

答えて

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 
+0

@ user614978、あなたの質問に答えを投稿しました。そのクエリを実行してください。 – Mansoor

+1

'WHERE'節に' AND T1.id2 = T2.id2'を追加したいかもしれません。 –

+0

@Giorgos Altanis、ご意見ありがとうございます。私の投稿を更新しました – Mansoor

関連する問題