Utilização de clausulas JOIN e exceção no SQL Oracle

24/05/2017

0

Boa tarde,
Preciso tratar uma exceção no código abaixo:


select distinct a.nr_sequencia OS,
a.DS_DANO_BREVE Descrição,
substr(OBTER_DESC_ESTAGIO_PROC(a.nr_seq_estagio),1,60) Estágio,
b.NM_USUARIO_EXEC Executor

from MAN_ORDEM_SERVICO_EXEC b,
MAN_ESTAGIO_PROCESSO d,
MAN_ORDEM_SERVICO A left join MAN_ORDEM_ATIV_PREV E ON A.nr_sequencia = E.NR_SEQ_ORDEM_SERV
where E.DT_PREVISTA is null

-- and E.NR_SEQ_ATIV_EXEC <> 80 TRATAR ESSA EXECESSÃO, TRAZER TODOS QUE NÃO POSSUEM SOMENTE O 80, DESCONSIDERAR OS DEMAIS. ESSE CAMPO NÃO VAI EXISTIR NA TABELA 'MAN_ORDEM_ATIV_PREV E' PORTANTO É UMA EXCEÇÃO.

and a.nr_sequencia = b.nr_seq_ordem
and a.NR_SEQ_ESTAGIO = d.nr_sequencia
and a.IE_STATUS_ORDEM = 2
and a.NR_SEQ_ESTAGIO = 445


Preciso trazer o resultado do sql de forma que desconsidere os resultados diferente de NR_SEQ_ATIV_EXEC 80. Note que tive que utilizar uma clausula join para buscar somente as informações que existem na primeira tabela e não existem na segunda. Porem podem haver informações na segunda tabela que preciso desconsiderar.
Agradeço a atenção
Mvsousa

Mvsousa

Responder

Posts

24/05/2017

Roberto Spernega

Bom dia,

Você pode criar uma função que retorne a quantidade de NR_SEQ_ATIV_EXEC.

exemplo (bem mais ou menos, isso é só uma ideia):

create or replace
function fn_qt_atividade (p_NR_SEQ_ORDEM_SERV number) return number is
v_existe number := 0;

begin

-- aqui você faz um select count onde NR_SEQ_ATIV_EXEC for diferente de 80

select count(1) into v_existe from MAN_ORDEM_ATIV_PREV ou MAN_ORDEM_SERVICO (não sei qual é a tebela)
where NR_SEQ_ATIV_EXEC <> 80;

return v_existe;
end;

dai o SELCT ficaria

select distinct a.nr_sequencia OS,
a.DS_DANO_BREVE Descrição,
substr(OBTER_DESC_ESTAGIO_PROC(a.nr_seq_estagio),1,60) Estágio,
b.NM_USUARIO_EXEC Executor
from MAN_ORDEM_SERVICO_EXEC b,
MAN_ESTAGIO_PROCESSO d
where E.DT_PREVISTA is null
and fn_qt_atividade(a.nr_sequencia) > 0
and a.nr_sequencia = b.nr_seq_ordem
and a.NR_SEQ_ESTAGIO = d.nr_sequencia
and a.IE_STATUS_ORDEM = 2
and a.NR_SEQ_ESTAGIO = 445;
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar