Рассмотрим следующую таблицу users
application user_id user_role role_permissions
-------------------------------------------------------
1 20 A add
1 20 B edit
1 30 A add
1 20 B edit
1 30 V delete
1 20 G duplicate
1 40 X purge
2 20 W hide
2 20 P unhide
2 40 X purge
Я хочу перечислить все роли, которые каждый пользователь имеет для приложения , следующим образом:
application user_id roles permissions
-----------------------------------------------
1 20 A;B;G add;edit;duplicate
1 30 A;V add;delete
1 40 X purge
2 20 W;P hide;unhide
2 40 X purge
Я пытался сделать это, используя stuff
, но у меня ничего не вышло:
select users.user_id,
stuff
((
select ';' + user_role from users a
where a.user_id = b.user_id
for xml path('')),1,1,''
) as roles
from users b
Это дает мне:
user_id permissions
-----------------------
20 A;B;B;G
20 A;B;B;G
20 A;B;B;G
30 A;V
30 A;V
...
etc
Как я могу получить отдельные строки в приложении PER?