Pular para o conteúdo
  • Este tópico contém 6 respostas, 3 vozes e foi atualizado pela última vez 18 anos, 1 mês atrás por chduarte.
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #75746
    drhoffman
    Participante

      boas tenho este query que me da o tipo de operacoes e me conta quantas operacoes tive na semana passada mas queria o output doutra forma,o query é este

      select data,tipo_op,contagem_op
      from(select int.data as data,t.tipo_op as tipo_op,count(t.id_tipo_op) as contagem_op
      from interv int,operacoes op,tipo_op t
      where int.data=op.data
      and int.id_jardim=op.id_jardim
      and op.id_tipo_op=t.id_tipo_op
      and int.data<=trunc(sysdate,'day')-2 and int.data>=trunc(sysdate,’day’)-6
      group by int.data,t.tipo_op
      )
      order by 2;

      o output é

      DATA TIPO_OP CONTAGEM_OP
      ———- ————————————————– ———–
      10-05-2006 PLANTACAO 1
      10-05-2006 REGA 1

      e eu queria uma coisa deste tipo

      10-05-2006 PLANTACAO,REGA 2

      alguem me sabe dizer se isto e possivel fazer? agradecia 🙂

      #77650
      Anônimo

        Vê se ajuda brother…

        DECLARE

        v_retorno owa_util.vc_arr;
        v_string VARCHAR2(30) := ‘123|5|8|30|27|1|8’;

        FUNCTION quebra_texto (v_texto VARCHAR2, v_separador VARCHAR2)
        RETURN OWA_UTIL.vc_arr
        IS
        v_contador NUMBER := 1;
        v_posicao NUMBER := 1;
        acum VARCHAR2 (4000) := v_texto;
        arr_explode OWA_UTIL.vc_arr;
        BEGIN

          IF v_texto IS NULL OR v_separador IS NULL
          THEN
             RETURN arr_explode;
          END IF;
        
          WHILE v_posicao  0
          LOOP
             v_posicao := INSTR (acum, v_separador);
        
             IF v_posicao = 0
             THEN
                arr_explode (v_contador) := acum;
             ELSE
                arr_explode (v_contador) := SUBSTR (acum, 1, v_posicao - 1);
                acum := SUBSTR (acum, v_posicao + LENGTH (v_separador));
                v_contador := v_contador + 1;
             END IF;
          END LOOP;
        
          RETURN arr_explode;
        

        END quebra_texto;

        BEGIN

        v_retorno := quebra_texto(v_string, ‘|’);

        FOR x IN 1..v_retorno.COUNT
        LOOP
        DBMS_OUTPUT.put_line(‘Texto: ‘ || v_retorno(x));
        END LOOP;

        END;

        Abraço,

        #77816
        Anônimo

          Vê se ajuda brother…

          DECLARE

          v_retorno owa_util.vc_arr;
          v_string VARCHAR2(30) := ‘123|5|8|30|27|1|8’;

          FUNCTION quebra_texto (v_texto VARCHAR2, v_separador VARCHAR2)
          RETURN OWA_UTIL.vc_arr
          IS
          v_contador NUMBER := 1;
          v_posicao NUMBER := 1;
          acum VARCHAR2 (4000) := v_texto;
          arr_explode OWA_UTIL.vc_arr;
          BEGIN

            IF v_texto IS NULL OR v_separador IS NULL
            THEN
               RETURN arr_explode;
            END IF;
          
            WHILE v_posicao  0
            LOOP
               v_posicao := INSTR (acum, v_separador);
          
               IF v_posicao = 0
               THEN
                  arr_explode (v_contador) := acum;
               ELSE
                  arr_explode (v_contador) := SUBSTR (acum, 1, v_posicao - 1);
                  acum := SUBSTR (acum, v_posicao + LENGTH (v_separador));
                  v_contador := v_contador + 1;
               END IF;
            END LOOP;
          
            RETURN arr_explode;
          

          END quebra_texto;

          BEGIN

          v_retorno := quebra_texto(v_string, ‘|’);

          FOR x IN 1..v_retorno.COUNT
          LOOP
          DBMS_OUTPUT.put_line(‘Texto: ‘ || v_retorno(x));
          END LOOP;

          END;

          Abraço,

          #77652
          Anônimo

            Desculpa brother, respondi errado…
            Vou desenvolver solução pra tua resposta e te retorno.

            abraço,

            Trevisolli.

            #77818
            Anônimo

              Desculpa brother, respondi errado…
              Vou desenvolver solução pra tua resposta e te retorno.

              abraço,

              Trevisolli.

              #77654
              chduarte
              Participante

                Voce pode utilizar o proprio SQL*Plus para dar uma boa melhorada ai:

                A query:
                select trunc(data) data,tipo_op,contagem_op

                O resto da query permanece igual.

                No SQL*Plus digite o seguinte:

                SQL> break on data
                SQL> compute sum of contagem_op on data
                SQL> spool c:pastanome_do_relatorio
                SQL>
                SQL> spool off

                Voce tera algo assim:

                DATA TIPO_OP CONTAGEM_OP


                10-05-2006 PLANTACAO 1
                REGA 1
                REGA2 1
                PLANTACAO2 1
                sum **************************** 4

                11-05-2006 PLANTACAO 2
                REGA 1
                REGA2 2
                PLANTACAO2 1
                sum **************************** 6

                Grande abraco[]

                Carlos Henrique Duarte
                DBA Oracle 11i

                #77820
                chduarte
                Participante

                  Voce pode utilizar o proprio SQL*Plus para dar uma boa melhorada ai:

                  A query:
                  select trunc(data) data,tipo_op,contagem_op

                  O resto da query permanece igual.

                  No SQL*Plus digite o seguinte:

                  SQL> break on data
                  SQL> compute sum of contagem_op on data
                  SQL> spool c:pastanome_do_relatorio
                  SQL>
                  SQL> spool off

                  Voce tera algo assim:

                  DATA TIPO_OP CONTAGEM_OP


                  10-05-2006 PLANTACAO 1
                  REGA 1
                  REGA2 1
                  PLANTACAO2 1
                  sum **************************** 4

                  11-05-2006 PLANTACAO 2
                  REGA 1
                  REGA2 2
                  PLANTACAO2 1
                  sum **************************** 6

                  Grande abraco[]

                  Carlos Henrique Duarte
                  DBA Oracle 11i

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