我们假设我有一张表格,指定Users
作为部门的经理,例如:
UserManagerTable
:
ID UserId DivisionId
1 23 1
2 45 0
当DivisionId = 0
表示用户被指定为Divisions
表中所有部门的管理员时。
我想知道查询此表以返回DivisionId's
的最佳方式,如果DivisionId = 0
则返回DivisionIds
表中的所有Divisions
。
SELECT DivisionId FROM UserManagerTable...?
DivisionId
1
1
2
3
...
...
30
最初,我认为我可以做类似的事情:
SELECT
CASE
WHEN DivisionId = 0 THEN (Select DivisionId FROM Division)
ELSE DivisionId
END AS DivisionID
FROM PoAppApprovedRequestor
但那并没有让我得到我想要的东西。
答案 0 :(得分:2)
你的意思是这样吗?
select d.*
from divisions d
where exists (select 1
from usermanager um
where um.id = @id and
(um.divisionid = 0 or um.divisionid = d.divisionid)
);
答案 1 :(得分:0)
您可以使用下面的查询
;with newUserManagerTable as
(
select ID,UserId,D.DivisionId from
from UserManagerTable U Join Divisions D
on U.DivisionId=D.DivisionId or U.DivisionId=0
)
--you query here on newUserManagerTable