我提供了表的详细信息以及预期的输出是什么
实际值为
我需要知道用户是否被阻止,处于活动状态,处于非活动状态。在这3种状态中,用户只能处于1种。
例如,如果用户被阻止,他将不会处于活动状态-因此,总体而言,我只需要1个状态。如何为这种情况编写SQL查询?
答案 0 :(得分:1)
使用CASE
语句
SELECT p.FirstName,p.LastName,
CASE WHEN t.IsBlocked=1 THEN 'Blocked'
WHEN r.IsActive =1 THEN 'Active'
ELSE 'Inactive' END as user_status
FROM User t JOIN Person p ON t.PersonId=p.Id
JOIN Resume r ON t.PersonId=r.PersonId
答案 1 :(得分:1)
在您的情况下,Person是包含所有人员的主表,因此您应该让该用户退出并继续向该用户恢复表,并使用case语句获取状态,
SELECT P.ID,P.FirstName,p.LastName,case when T.IsBlocked=1 then 'Blocked'
when R.IsActive =1 then 'Active'
else 'Inactive' end as user_status
FROM Person P
LEFT JOIN User U on P.ID=U.PersonId
LEFT JOIN Resume R on P.Id=R.PersonId