I have 1 map table
x
Group Task
----- -----
Admin Add
Admin Edit
Admin Delete
Admin View
User View
I need to generate it in a matrix table like
Task Admin User
------ ------ ------
Add Yes No
Edit Yes No
Delete Yes No
View Yes Yes
It will help if someone could suggest how SQL Server can generate this output?
Advertisement
Answer
Use conditional aggregation:
select
task,
max(case when [group] = 'Admin' then 'Yes' else 'No' end) Admin,
max(case when [group] = 'User' then 'Yes' else 'No' end) User
from mytable
group by task
This works because 'Yes'
> 'No'
.