Oracle - Sacar de cada linea el ultimo registro

 
Vista:
sin imagen de perfil
Val: 5
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Sacar de cada linea el ultimo registro

Publicado por Juan Javier (2 intervenciones) el 27/03/2021 19:31:50
Buenas tardes, ayuda maestros, tengo que sacar de cada linea el ultimo registro, cadalinea tiene muchos registro o eventos, asi como lo estoy haciendo logicamente esta mal porque me va salir un solo registro, y necesito de cada linea el ultimo registro.

1
2
3
4
5
6
7
8
9
10
select b.short_description, a.*
from postsale.POST_HISTORY a left join postsale.post_service b on b.service_id = a.service_id
where a.msisdn in ('3243162871',
'3004703764',
'3243859948',
'3044915076',
'3243455251',
'3243457051')
and ROWNUM <=1
order by a.create_DATE desc;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de gilman
Val: 117
Bronce
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Sacar de cada linea el ultimo registro

Publicado por gilman (52 intervenciones) el 28/03/2021 09:04:21
Está mal por dos razones, una la que comentas que solo te devolvera un registro, y otra que la ordenación la hace después de ejecutar la WHERE, es decir, ni siquiera será el último registro
Prueba:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT b.short_description, a.*
  FROM postsale.POST_HISTORY a
       LEFT JOIN postsale.post_service b ON b.service_id = a.service_id
       INNER JOIN (SELECT a.msisdn, MAX (a.create_DATE) last_date
                     FROM postsale.POST_HISTORY a
                    WHERE a.msisdn IN ('3243162871',
                                       '3004703764',
                                       '3243859948',
                                       '3044915076',
                                       '3243455251',
                                       '3243457051')
                   GROUP BY a.msisdn) c
          ON a.msisdn = c.msisdn AND a.create_DATE = c.last_date
 WHERE a.msisdn IN ('3243162871',
                    '3004703764',
                    '3243859948',
                    '3044915076',
                    '3243455251',
                    '3243457051')
Debería funcionar, pero no puedo probarla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Sacar de cada linea el ultimo registro

Publicado por Juan Javier (2 intervenciones) el 30/03/2021 06:24:24
Muchas gracias, me funciono, asi era...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar