я хочу настроить запрос ниже - PullRequest
0 голосов
/ 06 сентября 2018
SELECT GRIRNO,GRIRDATE,CLRD_ON
FROM GRIR_PASS
WHERE APRVD_BY IS NOT NULL and
      grirno not in 
    (select grirno
     from grirmain
     where rcvd_by is not null
    )
ORDER BY
     TO_NUMBER(substr(GRIRNO,instr(GRIRNO,'/',1,1)+1,(instr(GRIRNO,'/',1,2)-instr(GRIRNO,'/',1,1)-1)));

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Вы можете использовать МИНУС вместо того, чтобы не использовать его для выбора GRIRNO из таблиц буксировки GRIR_PASS и grirmain

  select GRIRNO,GRIRDATE,CLRD_ON 
  from GRIR_PASS 
  inner join  (
    select  GRIRNO 
    FROM GRIR_PASS
    WHERE APRVD_BY IS NOT NULL
    minus 
    select grirno 
    from grirmain
    where rcvd_by is not null
  ) t on t.GRIRNO = GRIR_PASS.GRIRNO
  ORDER BY
       TO_NUMBER(substr(GRIRNO,instr(GRIRNO,'/',1,1)+1,(instr(GRIRNO,'/',1,2)-instr(GRIRNO,'/',1,1)-1)));
0 голосов
/ 06 сентября 2018

Я думаю, что вы можете использовать MINUS вместо NOT IN для увеличения производительности в большинстве ситуаций:

SELECT *
  FROM
(
 SELECT GRIRNO, GRIRDATE, CLRD_ON
  FROM GRIR_PASS
 WHERE APRVD_BY IS NOT NULL
 MINUS
 SELECT GRIRNO, GRIRDATE, CLRD_ON
  FROM GRIR_PASS
 WHERE grirno in (select grirno from grirmain where rcvd_by is not null)
 ) 
 ORDER BY TO_NUMBER(substr(GRIRNO,
                           instr(GRIRNO, '/', 1, 1) + 1,
                           (instr(GRIRNO, '/', 1, 2) -
                           instr(GRIRNO, '/', 1, 1) - 1)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...