Ir para conteúdo
nicolasbessa

Validar valor para condição dentro de um select

Recommended Posts

Boa tarde!

 

Como aplicar a regra abaixo em um select?


Regra Join
Quando o campo substr(x, 1,1)  ='1'
montar a chave de pesquisa:
y = '8' AND y1 =  'L'||lpad( x1, 2)) 

Quando o campo substrt(x, 1,1) for igual ='A'
montar a chave de pesquisa:
y = '8' AND y1 =  'M'||lpad( x1, 2)) 

 

obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Where

(
 (substr(x, 1,1)  ='1'
  and
  (y = '8' AND y1 =  'L'||lpad( x1, 2)) )
OR
  (substrt(x, 1,1)  ='A'
   and
  (y = '8' AND y1 =  'M'||lpad( x1, 2))  )
)  

 

 

Isto deve ficar lento ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta, primeiramente muito obrigado pelo retorno, porém eu já havia aplicado dessa forma e não retorna dados. O join esta correto, pois eu removo essa condição a query retorna registros normalmente.

 

Query original:

 

select typeinsjson(a.or_num_docto, json_arrayagg(json_object('documento' value a.or_num_docto
         , 'nomeRequerido'       value ACNANOME
         , 'numeroProcesso'      value ACNAPROC
         , 'numeroVaraCivel'     value ACNAVARA
         , 'descricaoForo'       value ACNAFORO
         , 'uf'                  value ACNAUFED
         , 'tipoAcaoCivel'       value ACNATPAC
         , 'dataOcorrencia'      value ACNADTOC
         , 'dataCancelamento'    value ACNADTCN 
         , 'dataRegistro'        value ACNADTRG
         , 'valorCausa'          value ACNAVALO 
         , 'nomeAutor'           value ACNAAUTO
         , 'doctoAutor'          value ACNAADOC 
         , 'condicao'            value ACNACOND
         , 'dataRegistroB'       value ACNADTRB
         , 'controleAtualizacao' value ACNACATU
         , 'descricaoAcao'       value t.TABGDESC
         , 'codigoMunicipio'     value i.IBGECMUN 
         , 'codigoUF'            value i.IBGECUFE)returning clob))
      from as_acna a,
           as_tabg t,
           as_ibge i
     where a.acnaforo = i.ibgenmun
       and a.acnaufed = i.ibgemufe
       and ( (substr(a.acnakdoc, 1,1)  ='1' and (t.tabgktip = '19' AND t.tabgkcod =  'J'||lpad( a.acnatpac, 2)) )
        OR (upper(substr(a.acnakdoc, 1,1))  ='A'and (t.tabgktip = '19' AND upper(t.tabgkcod) = 'F'||lpad(a.acnatpac, 2))) )
       and a.acnatpac not in (9,10,11,20,30,31,32,33,34,35,37,75,76)                              
       and exists (select *
                              from as_acna b
                           where a.or_num_docto = b.or_num_docto
                              and b.or_flg_sincronismo = 'N')
  group by a.or_num_docto;

 

 

OBRIGADO!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só fazendo o "join" na mão , 

faça o select sem a tabela as_tabg e

faça select dela tentando localizar os valores 

 

t.tabgkcod teria de ter valores como "J 1"  se a.acnatpac for "1" por exemplo,

este "J" e "F" é física e jurídica , não ?

não teria uma forma melhor ? Este valor não está em outra tabela

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

select sem a tabela as_tabg retorna os dados

 

Acredito q seja fisica e juridica, não conheço a origem, estou "simulando" a origem, criando massa de dados na mão para acelerar o desenvolvimento

 

procuro opções, esgotei aqui rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por mr22robot
      Estou com uma dúvida. É possível determinar um select a partir de uma escolha?
      Ex. 
      SELECT CASE WHEN a < b THEN select * from tabela1 WHEN d < e THEN select * form tabela2 END FROM tabela; Algo parecido. Se uma condição for atendida select1 , se outra condição for atendida: select2.
      O que acontece: estou com um relatorio que preciso criar no winthor e não consigo melhorar isso. Tenho de fazer três relatorios como solução. Se eu consigo implantar isso, eu faria somente um relatorio. 
      Tipo se marcar um campo, sai um relatorio. Se marcar outro, saí outro relatorio.
    • Por GabrielB3r
      Bom dia,
      estou tentando criar um sistema de empréstimo e devolução de documentos.
      Funciona da seguinte forma:
      A pessoa tem o opção de cadastrar novos documentos,os quais são inseridos da tabela "dossie_cadastrado", e ela pode cadastrar o empréstimo e a devolução do mesmo que ficam salvos na tabela "dossie_emprestimo".
      A parte de cadastro e empréstimo consegui fazer funcionar, meu problema é na hora de cadastrar a devolução. Preciso inserir a data atual no último cadastro de um determinado dossie na tabela "dossie_emprestimo".
       
      Tenho o seguinte código:
      if(isset($_POST["cod_cad"])){         $cod_cad = $_POST["cod_cad"];         }          if(isset($_GET["cod_cad"])){         $cod_cad = $_GET["cod_cad"];     } $cod_cad = strip_tags($_POST['cod_cad']); $select_upd= mysqli_query($conexao_bd,"SELECT id_emp, data_emp from dossie_emprestimo where cod_cad='$cod_cad' ORDER BY data_emp desc limit 1") ; $sql_update="UPDATE dossie_emprestimo SET data_dev=CURDATE() WHERE id_emp='$id_emp'"; mysqli_query($conexao_bd, $sql_update);  
      quando eu rodo esse código separado no phpmyadmin, funciona normalmente, mas quando coloco no meu código ele não encontra o id_emp.
      id_emp - id de empréstimo, chave primaria com auto incremento.
      data_emp - data que foi realizado o empréstimo.
      cod_cad - código de cadastro, é o código que esta relacionado a tabela de cadastro, é o id do documento. ex: toda vez que o documento "20" for emprestado esse código sera "20".
       
    • Por asacap1000
      Salve Galera, estou quase finalizando um relatório porém travei em um campo.
      Este relatório consiste em subtrair hora de entrada e saída, trazer em dias horas e minutos de um período.
      Depois preciso calcular a média destes resultados.
      eu barrei na parte de dias não vem a informação correta.
       
      Segue select se alguem puder me dar uma força.
       
      SELECT io.id_in_out, IOP.DOCUMENT,IO.TIME_IN entrada, IO.TIME_RELEASE_PP saida, LPAD(TRUNC(((IO.TIME_RELEASE_PP - IO.TIME_IN) /24 )), 2, '0') || ':' || LPAD(TRUNC(((IO.TIME_RELEASE_PP - IO.TIME_IN) * 24 )), 2, '0') || ':' || LPAD(TRUNC(MOD((IO.TIME_RELEASE_PP - IO.TIME_IN) * 86400, 3600) / 60), 2, '0') || ':' || LPAD(TRUNC(MOD(MOD((IO.TIME_RELEASE_PP - IO.TIME_IN) * 86400, 3600), 60)), 2, '0') TEMPO FROM DESMEMBR DD, IN_OUT_POS IOP, IN_OUT IO, SPEDITEURE S, VEHICLE V, DRIVER D WHERE DD.TYP_PROCESS = 'DINACI' AND 'DI' = IOP.TYP_DOCUMENT AND DD.NR_DI = IOP.DOCUMENT AND IOP.ID_IN_OUT = IO.ID_IN_OUT AND IO.ART_IN_OUT IN ('CA', 'CC', 'CCE') AND IO.STAT <> '80' AND S.ID_SPEDITEUR = IO.ID_SPEDITEUR AND V.ID_VEHICLE = IO.ID_VEHICLE AND IO.TIME_IN >= TO_DATE('01/12/2018', 'dd/mm/yyyy') AND IO.TIME_IN <= TO_DATE('31/12/2018', 'dd/mm/yyyy') AND D.ID_DRIVER = IO.ID_DRIVER O resultado acima está vindo assim:
       
      1    378470    1211942181    14/12/2017 09:35:41    14/12/2017 13:32:31    00:03:56:50
      2    378470    1211942181    14/12/2017 09:35:41    14/12/2017 13:32:31    00:03:56:50
       
      Depois de acertar isso preciso realizar a média que a principio eu utilizaria o AVG mas dá erro.
       
      Agradeço quem puder me ajudar.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.