I have two tables User
and UserRoles
in sql server. User
table has basic user information e.g. UserId,Name
etc and UserRoles
has columns like UserId,RoleName
. There is one to many relationship between these two tables i.e. one User can have multiple roles.
User
UserId Name
1 A
2 B
3 C
UserRoles
UserId Rolename
1 Manager
1 Event Organiser
2 Supervisor
2 Employee
2 Some otherRole
I need to write a query in sql which will return like following. i.e concatenate one to many records into a single string
UserId Roles
1 Manager,Event Organiser
2 Supervisor,Employee,Some otherRole
You have to use Below 2 SQL Function
XML Path- For Concatenation
Stuff For Comma separation
select UserId,
stuff((select ',' + t2.Rolename
from UserRoles t2 where t1.UserId = t2.UserId
for xml path('')),1,1,'') Roles
from UserRoles t1
group by UserId
SQL Fiddle
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With