0
SELECT Name, Members 
FROM People 
WHERE Name LIKE '%Kako%' 
GROUP BY Name, Members

I am getting this result from the SQL query shown above:

Name        |   Members
------------+-------------
James Kako  |   Rangers
James Kako  |   Wind
James Kako  |   Poers
James Kako  |   Lohe
James Kako  |   Jubo
J. Kako     |   Wind
J. Kako     |   Lohe
J. Kako     |   Poers

I would like to merge Members column like this:

Name        | Members
------------+---------------------------------
James Kako  | Rangers, Wind, Poers, Lohe, Jubo
J. Kako     | Wind, Lohe, Poers

Thank you in advance

marc_s
  • 704,970
  • 168
  • 1,303
  • 1,425
Kerberos
  • 1,190
  • 6
  • 22
  • 46

2 Answers2

1

Using STRING_AGG is the direct way for this type of problems :

SELECT Name, STRING_AGG(Members, ', ') as Members
  FROM People
 WHERE Name LIKE '%Kako%'
GROUP BY Name
ORDER BY Name DESC;

SQL Fiddle Demo

Barbaros Özhan
  • 47,993
  • 9
  • 26
  • 51
  • @Kerberos kolay gelsin dostum. – Barbaros Özhan Jul 10 '18 at 22:45
  • Teşekkürler. Aslında gerçek veriler çoklu sonuç veriyor. Yani James Kako | Rangers kayıdından onlarca veri var. Bu verileri sub query'ler ile DISTINCT ettim. Acaba önerebileceğiniz daha sağlıklı bir yöntem var mıdır? – Kerberos Jul 10 '18 at 22:50
  • @Kerberos evet, dediğiniz gibi subquery ile DISTINCT ya da daha çok `GROUP BY Name, Members` biçiminde kullanmak bana daha performanslı gibi gelir her zaman( Oracle'dan edinmiş olduğum izlenim). İyi geceler. – Barbaros Özhan Jul 10 '18 at 23:00
  • 1
    Teşekkür ederim. İyi çalışmalar. – Kerberos Jul 12 '18 at 08:04
0

This solution works as well:

DECLARE @char VARCHAR(MAX);
SELECT @char = COALESCE(@char + ', ' + members, members) 
FROM MergeColumn ;
Select name , @char as Mergerd from MergeColumn group by name;

Also, you can take a look at this link for more solutions to the question you asked: How to concatenate text from multiple rows into a single text string in SQL server?

Ehsan
  • 707
  • 7
  • 18