的任何行搜索的价值存在SQL CASE语句我有如下表:解决:在WHERE子句中
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子句执行以下操作:
- 如果一个监督员工作的事件,产生只占 上司一个报告。下属不需要报告。
- 如果没有分配给事件的主管,则仅为每个从属类型1生成一个报告。 (理想情况下是一个单一的报告无论多少下属们的工作是大事,但我生活中可以没有这个。)
- 从式2永远不会需要一个报告
我尝试了下列基于一些建议,我看到其他地方(事件标准被指定为运行报告的一部分,因此不包含在查询):
WHERE
JobRole LIKE
(CASE WHEN EXISTS (SELECT JobRole
FROM Table
WHERE JobRole LIKE 'Supervisor')
THEN 'Supervisor'
ELSE 'Subordinate Type 1'
END)
当监督员被分配到一个事件能正常工作(即事件2 ),但是当监督人员不存在给定事件(即事件1)时返回零值。我不确定ELSE位为什么不在踢,但我承认我不太熟悉EXISTS的细微差别。
我正在SQL Server Management Studio 2012中工作,如果有帮助的话。谢谢!编辑:Solution found,谢谢大家谁帮助!
如果你没有任何通配符比较,你为什么使用'like'。我会用'='来代替。 – AXMIM
我的实际JobRoles将会有一个通配符,为了清楚起见,我在这里简化了它们。 – MustGoFaster
虽然它会表现不佳,并且不会处理只有一个下属类型1的报告,但您的代码应该可以工作。我怀疑你的数据实际上并不像你认为的那样,或者你有一个错字。我会再仔细检查一下这个值,看看它们是否与你在条件中写的一样。 – AXMIM