- Este tópico contém 4 respostas, 2 vozes e foi atualizado pela última vez 9 anos, 2 meses atrás por Lourival.
-
AutorPosts
-
15 de setembro de 2015 às 4:29 pm #107716LourivalParticipante
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,Identificadoras 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 01020315O que eu preciso que me retorne:
MAQUINA DATA OPERAÇÂO EVENTO IDENTIFICADOR
maq01 15/09/2015 ligada peças 03 – peças 10 01020315Já 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
15 de setembro de 2015 às 4:39 pm #107717rmanParticipante@Lourival
Pesquise por LISTAGG.
15 de setembro de 2015 às 6:58 pm #107718LourivalParticipanteRman
Obrigado pela dica, mas o Oracle que tenho aqui é o 10g e não tem essa funcionalidade.
Obrigado
Lourival
16 de setembro de 2015 às 3:00 pm #107719rmanParticipante@Lourival
Segue diversas soluções, inclusive para Oracle Database 10g:
https://oracle-base.com/articles/misc/string-aggregation-techniques
16 de setembro de 2015 às 6:11 pm #107721LourivalParticipante@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_codeWHERE 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.locatoronde 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 4322092Eu preciso somente que me mostre a linha 2 deste resultado.
Obrigado.
-
AutorPosts
- Você deve fazer login para responder a este tópico.