Оператор Oracle SQL CASE в предложении SELECT не работает - PullRequest
0 голосов
/ 01 сентября 2018

Я получаю смешанные результаты при выполнении следующего оператора CASE.

То, что я пытаюсь сделать, это определить типы ремонта на основе

1) часть их номера детали и 2) часть трудового кодекса, связанная с номером детали.

Похоже, что оператор работает с теми, которые называются «ЗАМЕНЕННЫЕ», но когда есть сочетание номеров деталей и / или трудовых кодов, это не так. В большинстве случаев они заканчиваются как «ДРУГОЕ».

Заявление CASE написано в порядке важности ремонта. Что-то не так с моей структурой? Я не задаю правильный вопрос?

(CASE 
 WHEN (D.PART_NO LIKE '3102%') AND (F.OPER_CD = 'JD01AA') THEN 'REPLACED'
 WHEN (D.PART_NO LIKE '310C%') AND (F.OPER_CD = 'JD01AA') THEN 'REPLACED'
 WHEN (D.PART_NO LIKE '3103%') AND (F.OPER_CD = 'JD01AA') THEN 'REPLACED'
 WHEN (D.PART_NO LIKE '310F%') AND (F.OPER_CD = 'JD01AA') THEN 'REPLACED'
 WHEN (D.PART_NO LIKE '3110%') THEN 'TCONVERT'
 WHEN (D.PART_NO LIKE '3121%') THEN 'AFR'
 WHEN (D.PART_NO LIKE '31490%') THEN 'GEAR_RDC'
 WHEN (D.PART_NO LIKE '31495%') THEN 'GEAR_RDC'
 WHEN (D.PART_NO LIKE '3170%') AND (F.OPER_CD = 'JD48AA') THEN 'CVALVE'
 WHEN (D.PART_NO LIKE '3834%') OR (F.OPER_CD IN ('JD64AA', 'JD65AA', 'JD66AA')) THEN 'DSEAL'
 WHEN (D.PART_NO LIKE '3137%') OR (F.OPER_CD ='JD88AA') THEN 'TCSEAL'
 WHEN (D.PART_NO LIKE '3311%') OR (F.OPER_CD ='JD88AA') THEN 'TCSEAL'
 WHEN (D.PART_NO LIKE '3170%') AND (F.OPER_CD = 'JD48AA') THEN 'CVALVE'
 WHEN (D.PART_NO LIKE '31490%') THEN 'GEAR_RDC'
 WHEN (D.PART_NO LIKE '31495%') THEN 'GEAR_RDC'
 WHEN (F.OPER_CD LIKE 'NODJD%') THEN 'NDF'
 WHEN (COUNT(D.PART_NO) < '1') THEN 'REPROGM'
     ELSE ('OTHER')
     END) RPRTYP 

Кто-нибудь может помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...