我有一个包含projectID,UserID和RoleID以及其他列的表。
我试图获得一个查询,根据每个项目的角色为我提供用户。
我试过if和case语句但是能够解决这个问题。
表:
projectid | userid | roleid | flag
1000001 | 20001 | 1 | Y
1000001 | 20002 | 2 | Y
1000001 | 20003 | 2 | Y
1000001 | 20004 | 3 | Y
1000001 | 20005 | 1 | Y
1000002 | 20006 | 3 | Y
考虑角色1 =初级,2 = TL,3 = HOD,我试图得到这样的东西
projectid | junior | TL | HOD
1000001 | 20001, 20005 | 20002, 20003 | 20004
1000002 | -------------| -------------| 20006
答案 0 :(得分:6)
您需要使用group_concat
select projectid,
group_concat(case when roleid = 1 then userid end) junior,
group_concat(case when roleid = 2 then userid end) senior,
group_concat(case when roleid = 3 then userid end) TL
from table1
group by projectid