Hiccup 0 Denunciar post Postado Julho 12, 2015 Olá pessoal,Estou montando uma query para resolver o seguinte problema: preciso recuperar o dof_sequence da nota de compra utilizando os dados do documento associado da nota de devolução. Vou explicar melhor.Quando efetuamos a compra de uma mercadoria, uma nota fiscal é lançada no sistema e essa recebe um dof_sequence, que é um chave única. Se devolvemos essa mercadoria, precisamos associar os dados da nota de compra a nota de devolução, que também tem um dof_sequence. O que descobrimos, é que o dof_sequence da compra é obrigatório estar relacionado no documento associado, o que não acontece. Assim, estou tentando montar uma query para resolver isso. Desde já, acho que deve estar errando na lógica. select a.dof_sequence, a.numero, b.numero_assoc, b.dh_emissao_assoc, b.serie_subserie_assoc, b.emitente_pfj_codigo_assoc, (select dof_sequence from cor_dof where numero = lpad(b.numero_assoc,9,'0') and dh_emissao = b.dh_emissao_assoc and serie_subserie = b.serie_subserie_assoc and emitente_pfj_codigo = b.emitente_pfj_codigo_assoc and ind_entrada_saida = 'E') dof_sequence from cor_dof a, cor_dof_associado b where a.dof_sequence = b.dof_sequence and a.codigo_do_site = b.codigo_do_site and a.ind_entrada_saida = 'S' and a.dt_fato_gerador_imposto >= '01-MAR-2015' and a.dt_fato_gerador_imposto <= '31-MAR-2015' Valor retornado pela query acima (apenas uma amostra): Nesse, o dof_sequence da nota de compra foi encontrado ... DOF_SEQUENCE 72020055 NUMERO 2032 NUMERO_ASSOC 400 DH_EMISSAO_ASSOC 06/mar/15 SERIE_SUBSERIE_ASSOC 1 EMITENTE_PFJ_CODIGO_ASSOC 0000085502F DOF_SEQUENCE 71965749 Já nesse, o dof_sequence da nota de compra não foi encontrado ... DOF_SEQUENCE 71885860 NUMERO 3070 NUMERO_ASSOC 121726 DH_EMISSAO_ASSOC 17/dez/14 SERIE_SUBSERIE_ASSOC 1 EMITENTE_PFJ_CODIGO_ASSOC 0000085232F DOF_SEQUENCE Como podem ver, o segundo exemplo não teve o dof_sequence da compra retornado, porém, se eu pegar o select destacado na query anterior e inserir os parâmetros manualmente, ele encontra o dof_sequence: select dof_sequence from cor_dof where numero = lpad('121726',9,'0') and dh_emissao = '17-DEZ-14' and serie_subserie = '1' and emitente_pfj_codigo = '0000085232F' and ind_entrada_saida = 'E' Resultado: DOF_SEQUENCE 55495619 Não sei se estou usando o select dentro do outro de forma errada. Eu fiz o select maior trazer os dados da nota de devolução e documento associado. Com esses dados, a ideia é recuperar o dof_sequence da nota de compra. :huh: Eu já tentei o lpad, ltrim para garantir que o número das notas vão ter o mesmo número de posições. Como alguns são encontrados, outros não, acho que estou errando algum detalhe na lógica. O campo NUMERO nas duas tabelas é um VARCHAR2 (60). Dessa forma, alguém poderia me dar uma força?! ;) Até mais, Hiccup Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 12, 2015 O primeiro teste que eu faria seria posto que o subselect faz referencia a uma tabela de proprio select eu colocaria um "alias" no subselect , ate por clareza. Sem entrar no mérito da estrutura do select em si. Segundo nao sei se entendi bem a questao do conteudo de NUMERO faz se é um VARCHAR e contem SEMPREum numerico , talvez algo como TO_NUMBER(TRIM(NUMERO)) = 123345 Resolva , mas se houver algo nao numerico vai dar erro Mas isto fara que um evental indice nao seja usado. Compartilhar este post Link para o post Compartilhar em outros sites
Hiccup 0 Denunciar post Postado Julho 13, 2015 Oi Motta, Seguindo sua sugestão, encontrei o problema, estava na série da nota -_- , foi só colocar um trim de cada lado que funcionou ... :) ... and trim(c.serie_subserie) = trim(b.serie_subserie_assoc) ... Mais uma vez, obrigado pela ajuda ... :D Até mais, Hiccup Compartilhar este post Link para o post Compartilhar em outros sites