我有一个C#程序,用户通过LinQConnect登录。
我现在需要一个返回0,1或2的SQLQuery。
select rolname
from pg_user a
join pg_auth_members b on (a.usesysid=b.member)
join pg_roles c on (c.oid=b.roleid)
where
a.usename='USERNAME'
如果用户处于角色" RoleA"如果用户处于角色" RoleB"我想返回1我想要返回2,如果他在两者中,我想反正2,如果用户不在任何角色中,我想返回0.
我知道我可以检查代码中的返回角色然后返回特定的数字,但是我可以通过查询返回0,1或2吗?
修改
我补充说:
max(case when rolname = 'RoleA' then '1'
when rolname = 'RoleB' then '2'
else '0'
end) // added max(), now it returns only 2 if im in both Roles
答案 0 :(得分:0)
我认为这应该有效 -
MAX(CASE WHEN rolname = 'RoleA' THEN '1'
WHEN rolname = 'RoleB' THEN '2'
WHEN COUNT(rolname) = 2 THEN '2'
ELSE '0'
END)
虽然我还没有尝试过,但我认为它应该有用。