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
  • 732,580
  • 175
  • 1,330
  • 1,459
Kerberos
  • 1,228
  • 6
  • 24
  • 48

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
  • 59,113
  • 10
  • 31
  • 55
  • 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
  • 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
  • 767
  • 7
  • 18