Pular para o conteúdo
  • Este tópico contém 4 respostas, 2 vozes e foi atualizado pela última vez 9 anos, 2 meses atrás por Avatar de LourivalLourival.
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #107716
    Avatar de LourivalLourival
    Participante

      Bom Dia Pessoal,

      minha dúvida é a seguinte:

      Tenho dados em uma coluna que preciso mostrar em apenas 1 linha;

      na tabela “info”são gravadas 2 eventos na coluna “evento”, o resultado da minha consulta
      fica em 2 linhas e a única parte diferente é justamente a da coluna “evento”.

      As colunas são:
      Máquina,Data,Operação,Evento,Identificador

      as linhas retornadas são:

      MAQUINA DATA OPERAÇÂO EVENTO IDENTIFICADOR
      maq01 15/09/2015 ligada peças 03 01020315
      maq01 15/09/2015 ligada peças 10 01020315

      O que eu preciso que me retorne:

      MAQUINA DATA OPERAÇÂO EVENTO IDENTIFICADOR
      maq01 15/09/2015 ligada peças 03 – peças 10 01020315

      Já tentei usando case,mas ou me retorna uma ou outra, ou continua em 2 linhas.

      Alguém poderia me ajudar?

      Agradeço desde já.

      Lourival

      #107717
      Avatar de rmanrman
      Participante

        @Lourival

        Pesquise por LISTAGG.

        #107718
        Avatar de LourivalLourival
        Participante

          Rman

          Obrigado pela dica, mas o Oracle que tenho aqui é o 10g e não tem essa funcionalidade.

          Obrigado

          Lourival

          #107719
          Avatar de rmanrman
          Participante

            @Lourival

            Segue diversas soluções, inclusive para Oracle Database 10g:

            https://oracle-base.com/articles/misc/string-aggregation-techniques

            #107721
            Avatar de LourivalLourival
            Participante

              @rman

              Já havia lido estes artigos anteriormente, e agradeço pela ajuda.

              Acredito que a estrutura da tabela aqui seja diferente, pois existe mais de uma coluna com diferença.

              A consulta que estou fazendo:

              /*
              SELECT substr(A.node_code,14,2) as MAQUINA,A.moment as DATA,
              CASE A.event_code WHEN 135 THEN ‘LIGADA’ END Evento_01,
              CASE P.event_code WHEN 54 THEN ‘OPERANDO’ END Evento_02,
              CASE A.event_code WHEN 135 THEN A.param END PEÇAS,A.locator as IDENTIFICADOR
              FROM event P
              INNER JOIN event I ON P.node_code=I.node_code AND P.locator = I.locator
              LEFT JOIN event A ON A.Param=I.Param AND A.locator = P.locator AND A.node_code=I.node_code

              WHERE P.cpy_code = ’00’
              AND P.node_type= ‘241’
              AND P.node_code = concat(‘0010000030000′,’&Maquina’)
              AND A.locator = ‘&Localizador’
              AND P.moment between to_date(concat(‘&Data_Ini’,’&Hora_Ini’), ‘DD/MM/YYYY HH24:MI’)
              and to_date(concat(‘&Data_Fim’,’&Hora_Fim’), ‘DD/MM/YYYY HH24:MI’)
              AND P.event_code in (‘135′,’54’)
              GROUP BY substr(A.node_code,14,2),A.moment,
              CASE A.event_code WHEN 135 THEN ‘LIGADA’ END,
              CASE P.event_code WHEN 54 THEN ‘OPERANDO’ END,
              CASE A.event_code WHEN 135 THEN A.param END,
              P.operator_id,A.locator

              onde a coluna *event_code* pode conter 2 diferenças e a coluna param possue 1 valor para cada código.

              O resultado:
              MAQUINA DATA EVENTO_01 EVENTO_02 PEÇAS IDENTIFICADOR
              1 07 16/09/15 08:47:00,000000 4322092
              2 07 16/09/15 08:47:00,000000 LIGADA OPERANDO 1 4322092
              3 07 16/09/15 08:47:00,000000 OPERANDO 4322092
              4 07 16/09/15 08:47:00,000000 LIGADA 1 4322092

              Eu preciso somente que me mostre a linha 2 deste resultado.

              Obrigado.

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