Как я могу переписать этот сценарий SQL без использования существует - PullRequest
0 голосов
/ 03 июня 2019

Я новичок в sql.Как я могу переписать приведенный ниже скрипт без использования существует

select
  distinct oe.*,
  o.*,
  so.*,
  ro.*
from
  ms_bvoip_order_extension oe
  inner join ms_order o on oe.ms_order_id = o.ms_order_id
  inner join ms_sub_order so on so.ms_order_id = o.ms_order_id
  inner join ms_job j on j.entity_id = so.ms_sub_order_id
  inner join ms_task t on t.wf_job_id = j.wf_job_id
where
  o.order_type = 900
  and o.entered_date between to_date('12/01/2018 00:00:00', 'mm/dd/yyyy hh24:mi:ss')
  and to_date('12/31/2018 00:00:00', 'mm/dd/yyyy hh24:mi:ss')
  and j.entity_type = 5
  and exists (
    select
      'X'
    from
      ms_task t
    where
      (
        (t.name like '%Error%')
        or (t.name like '%Correct%')
        or (t.name = '%Create AOTS Ticket%')
      )
      and t.job_id = hextoraw(j.wf_job_id)
  )
order by
  o.usrp_order_number;

1 Ответ

1 голос
/ 03 июня 2019

Как упоминал Джерри, вы можете использовать EXISTS, но если вы не хотите, вы можете присоединиться к тому же подзапросу EXISTS:

INNER JOIN (
    SELECT DISTINCT hextoraw(j.wf_job_id) JOB_ID 
    FROM ms_task 
    WHERE t.name like '%Error%' 
        or t.name like '%Correct%' 
        or t.name like '%Create AOTS Ticket%'
    ) TASK ON t.job_id = TASK.JOB_ID

Возможно, вы могли бы удалить свою другую таблицу ms_task и присоединиться к j.wf_job_id ......

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