Oracle:在内部连接中,我想检查条件-1,如果条件 - A 成功,条件 2 如果条件 B 成功。为此,我写了以下内容,但没有运气。
有人可以帮助我吗
内部连接 student_unit_attempt sua 上 sua.person_id=sei.person_id 和sua.course_cd=sei.course_cd 和(案例 当i_unit_attempt_status不为空时 然后(sua.unit_attempt_status ="已注册"( 当i_unit_attempt_status为空时 然后(sua.unit_attempt_status='已完成'(结束(
CASE
表达式必须返回如下值:
INNER JOIN student_unit_attempt sua
on sua.person_id=sei.person_id
AND sua.course_cd=sei.course_cd
AND sua.unit_attempt_status = CASE
WHEN i_unit_attempt_status IS NOT NULL THEN 'ENROLLED'
ELSE 'COMPLETED'
END
将CASE
返回的值与sua.unit_attempt_status
进行比较。
尝试改写WHERE
子句中的逻辑,甚至不使用CASE
:
SELECT ...
INNER JOIN student_unit_attempt sua
ON sua.person_id = sei.person_id AND
sua.course_cd = sei.course_cd AND (
(i_unit_attempt_status IS NOT NULL AND sua.unit_attempt_status = 'ENROLLED') OR
(i_unit_attempt_status IS NULL AND sua.unit_attempt_status = 'COMPLETED'));