Показать другое поле из таблицы в зависимости от кода работы - PullRequest
0 голосов
/ 07 ноября 2019

Мне нужны некоторые идеи о том, как написать код Oracle SQL, чтобы показать другое значение поля в зависимости от того, что такое код_добства.

Если код_данных_обработки - это либо EN11, либо EN12, единственные задания, которые требуютдолжны быть возвращены те, в которых target_comp_date находится в прошлом.

Если код_принятия задан как EN90 или EN91, все задания должны отображаться с указанием target_comp_date.

Код, который я пытался вставить,ниже.

select

case
 when job_type.job_type_code in ('EN11','EN12') and job.target_comp_date < SYSDATE then 
 job.target_comp_date
 when job_type.job_type_code in ('EN90','EN91') then job.target_comp_date
 else 'check'
 end as Test

from
job
inner join job_type on job.job_type_key = job_type.job_type_key

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

Я думаю, вам нужно здесь выражение WHERE, а не выражение CASE:

SELECT *
FROM job j
INNER JOIN job_type jt
    ON j.job_type_key = jt.job_type_key
WHERE
    (jt.job_type_code IN ('EN11', 'EN12') AND j.target_comp_date < SYSDATE) OR
     jt.job_type_code IN ('EN90', 'EN91');
1 голос
/ 07 ноября 2019
Выражение

A case в select не будет фильтровать никакие данные. Это звучит как where предложение:

where (job_type_code in ('EN11', 'EN12') and target_comp_date < sysdate
      ) or
      (job_type_code in ('EN90', 'EN91') and target_comp_date > sysdate
      )

Не ясно, хотите ли вы другие job_type_codes. Если это так, добавьте or (job_type_code not in ('EN11', 'EN12', 'EN90', 'EN91').

...