我有下表:
Event StaffName JobRole
Event 1 FirstName LastName1 Subordinate Type 1
Event 1 FirstName LastName2 Subordinate Type 2
Event 2 FirstName LastName3 Supervisor
Event 2 FirstName LastName4 Subordinate Type 1
Event 2 FirstName LastName5 Subordinate Type 2
我的查询会提供一个较大的报告,该报告会为每个返回的行生成一个报告,但仅限于满足某些条件的情况。我正在尝试创建一个执行以下操作的WHERE子句:
我根据我在其他地方看到的一些建议尝试了以下内容(事件条件被指定为运行报告的一部分,因此未包含在查询中):
WHERE
JobRole LIKE
(CASE WHEN EXISTS (SELECT JobRole
FROM Table
WHERE JobRole LIKE 'Supervisor')
THEN 'Supervisor'
ELSE 'Subordinate Type 1'
END)
当Supervisor被分配给事件(即事件2)时,这可以正常工作,但当给定事件(即事件1)的Supervisor不存在时返回零值。我不确定为什么ELSE位没有进入,但我承认我并不过分熟悉EXISTS的细微差别。
我在SQL Server Management Studio 2012中工作,如果有帮助的话。谢谢!
答案 0 :(得分:0)
试试这个:
WHERE (JobRole = 'Supervisor') -- is supervisor
OR (JobRole = 'Subordinate Type 1' -- or is Subordinate Type 1 and...
and Event not in (select distinct event -- not is event with superv.
from Table
where JobRole = 'Supervisor')
)
希望这有帮助!
答案 1 :(得分:-1)
最好以OR:
完成WHERE (JobRole = 'Supervisor' or JobRole = 'Subordinate Type 1')
请注意,如果您正在测试的文本中没有通配符,则LIKE等效于=,因此为了更清楚地了解正在发生的事情(恕我直言),使用=。