Pular para o conteúdo
Visualizando 6 posts - 1 até 6 (de 6 do total)
  • Autor
    Posts
  • #78590
    Anônimo

      Estou gerando um relatório em excel, e nele, tem
      uma coluna(number) onde se repete os valores, pois no meu caso de relatório, aparecendo só uma vez esse valor já é o necessário.
      Gostaria de saber se tem alguma maneira de fazer este valor aparecer uma vez só, e quando ele repetir jogar por exemplo um valor null ou 0.
      Já tentei usar funções analíticas como over(patition by….) mas não consegui resolver o problema ainda..Se tiver alguma maneira de resolver isto e alguem puder me ajudar agradeço desde já.

      Fernando.

      #78592
      chduarte
      Participante

        Vc pode utilizar o distinct mas nao deu para visualizar muito bem o seu problema. Poderia colocar um “exemplo” para termos ver outra maneira de resolver o problema.

        []

        #78593
        Anônimo

          Aqui vai um exemplo de como aparece o relatório gerado em excel, onde mostra uma auditoria de estoque de todas as filiais da empresa:

          Filial evento descricao valor estoque_inicial
          1 1020 Estorno outras saidas 7,48 821349,7185
          1 3020 Atendimento Requisiçoes 4,95 821349,7185
          1 4050 Consumo interno 8,76 821349,7185
          4 4100 Transferencia recebida 12,53 39061,74008
          5 4050 Consumo interno 54,9 22885,49853
          5 4100 Transferencia recebida 35,8 22885,49853

          Percebe-se que quando o codigo da filial repete o valor do estoque inicial tambem repete. No caso do código da filial repetir não tem problema, o que eu queria que mostrasse uma vez só é o valor do estoque inicial, e joga-se um valor null ou 0 no lugar da repetição.

          Fernando.

          Fernando.

          #78594
          chduarte
          Participante

            Eu nao sei se voce esta buscando diretamente do excel, mas no SQL*Plus voce tem um comando chamando break.

            SQL> break on

            Este comando faz exatamente o que voce precisa. Acredito que somente utilizando SQL nao há como vc fazer esta regra. Poderia ser possivel com PL/SQL.

            Eu ja vi uma clausula chamada connect by prior mas nao sei se irá ajudar muito. Voce pode dar uma pesquisada nos guias de referencia.

            []

            #78595
            Anônimo

              no Reports este campo(Estoque_Inicial) que estou gerando em excel é uma Coluna_Formula que segue:

              function CF_est_iniFormula return Number
              is
              cursor c_est_ini is
              select nvl(sum(trunc(nvl(res.res_nu_qtde_total,0) * nvl(res.res_nu_custo_medio,0),6)),0) ESTOQUE_INICIAL
              from (select max(r.est_dt_data_movimento) max_data
              ,r.pro_id_codigo_do_produto produto
              ,r.emp_id_codigo_da_empresa empresa
              ,r.fil_id_codigo_da_filial filial
              from almox.tb_resumo_estoque r
              where r.emp_id_codigo_da_empresa = :p_empresa
              and r.fil_id_codigo_da_filial = :filial
              and r.est_dt_data_movimento <= :p_data_inicio – (1)
              and r.pro_id_codigo_do_produto = nvl(:p_produto,r.pro_id_codigo_do_produto)
              group by r.pro_id_codigo_do_produto
              ,r.emp_id_codigo_da_empresa
              ,r.fil_id_codigo_da_filial ) a
              ,almox.tb_resumo_estoque res
              where a.max_data = res.est_dt_data_movimento
              and a.empresa = res.emp_id_codigo_da_empresa
              and a.filial = res.fil_id_codigo_da_filial
              and a.produto = res.pro_id_codigo_do_produto;

                  v_est_ini number(18,6);
              

              begin

              open c_est_ini;
              fetch c_est_ini into v_est_ini;
              close c_est_ini;
              
              return v_est_ini;
              

              end;

              #78601
              chduarte
              Participante

                Eu nao conheco muito bem como o Excel trata a sessao mas ja que voce tem uma function, uma maneira para resolver seria criar uma package com uma variavel global e armazenar o ultimo valor impresso na coluna.

                Se o proximo valor for igual ao valor anterior, imprime null, senao imprime o valor.

                Da um pouco de trabalho mas se o Excel manter a sessao persistente e armazenar este valor da variavel global pode ser que resolva.

                []

              Visualizando 6 posts - 1 até 6 (de 6 do total)
              • Você deve fazer login para responder a este tópico.
              plugins premium WordPress