【发布时间】:2016-07-28 17:49:08
【问题描述】:
我正在尝试创建一个遵循以下逻辑的联接:
如果我们公司是原告,请加入以下角色类型 表格:辩护公司、辩护律师
如果我们公司是被告,请加入以下角色类型 表格:原告事务所、原告律师
到目前为止,我已经在连接中编写了这段代码,但是对于我尝试过的每种语法,它总是会产生一个错误:
WHERE
TRIAL.TRIAL_ID = OPPOSITION.TRIAL_ID
AND OPPOSITION.ROLE IN
CASE
WHEN TRIAL.POSITION = 'Plaintiff'
THEN ('Defense Firm','Defense Attorney' )
WHEN TRIAL.POSITION = 'Defendant'
THEN ('Plaintiff Firm','Plaintiff Attorney')
END
我们目前在 Oracle (??)g 上运行。
这种连接逻辑是否可能?
编辑:
- 修复了代码部分中的被告/原告混淆
- 不确定我们使用的是哪个版本的 Oracle。
【问题讨论】:
-
CASE 语句应该用在 select not in WHERE 子句中
-
@6ton - 您可以在 JOIN 或 WHERE 子句中使用 case 表达式;但是您只能将该表达式的单个结果与其他结果进行比较。你不能做 OP 正在尝试的事情......
-
刚刚看到一些例子 - 从未见过它在 WHERE 子句中使用过。谢谢@AlexPoole
-
Oracle 13g?什么时候发布的?
-
您用简单的英语描述的需求是有道理的。您在 WHERE 子句中写的内容没有意义。也就是说,当 TRIAL.POSITION = 'Plaintiff" 时, OPSITION.ROLE 应该在 ('Defense Firm', 'Defense Attorney')。你写的是 'PLAINTIFF...' 而不是 'DEFENSE'。请注意,Alex Poole 只是复制了什么你在查询中写的;在使用他的解决方案之前,你可能需要解决这个问题。