SQL - dos ultimos registros para cada ID de una tabla

 
Vista:
sin imagen de perfil

dos ultimos registros para cada ID de una tabla

Publicado por charly (3 intervenciones) el 07/01/2015 22:12:02
Ayuda, estoy intentando crear una consulta sql que me arroje como resultado los dos ultimos registros para cada ID (que cuenta con N registros) contenido en la tabla
El motor de busqueda que estoy utilizando es el sqldbx

LOS CAMPOS UTILIZADOS DE LA TABLA SERIAN

ID | Valor x | FECHA
1 250 01-01-2015
1 30 10-10-2014
1 300 09-12-2014
1 20 02-11-2014
1 50 30-12-2014


los resultado deberia arrojar los registros del 30-12-2014 y 01-01-2015....

lo mas cerca que e llegado es con esta query.... del ejemplo el ID seria BLNACC

SELECT BLNGLN,
BLNACC,
TO_DATE(CASE WHEN LENGTH(CAST(BLNRDD AS VARCHAR(2))) = 1 THEN
0||BLNRDD ELSE VARCHAR(BLNRDD) END ||
CASE WHEN LENGTH(CAST(BLNRDM AS VARCHAR(2))) = 1 THEN
0||BLNRDM ELSE VARCHAR(BLNRDM) END ||
CHAR(BLNRDY),'DDMMYYYY') AS FECHA ,
BLPPVI,
BLPIVI
FROM BLNOP
WHERE BLNDLC = 1
AND BLNGLN = 1210301210010000
--AND BLNACC = 102012126704
ORDER BY (TO_DATE(CASE WHEN LENGTH(CAST(BLNRDD AS VARCHAR(2))) = 1 THEN
0||BLNRDD ELSE VARCHAR(BLNRDD) END ||
CASE WHEN LENGTH(CAST(BLNRDM AS VARCHAR(2))) = 1 THEN
0||BLNRDM ELSE VARCHAR(BLNRDM) END ||
CHAR(BLNRDY),'DDMMYYYY')) DESC FETCH FIRST 2 ROWS ONLY
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 Isaias Islas
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

dos ultimos registros para cada ID de una tabla

Publicado por Isaias Islas (1921 intervenciones) el 07/01/2015 22:28:55
sqldbx es tu "front", ¿Cuál es tu motor de base de datos?
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

dos ultimos registros para cada ID de una tabla

Publicado por charly (3 intervenciones) el 07/01/2015 22:36:14
uffffff... no lo se... perop si sirve solo tengo acceso a consultar y por ende crear tablas temporales....
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
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

dos ultimos registros para cada ID de una tabla

Publicado por Isaias (1921 intervenciones) el 08/01/2015 17:52:45
Te doy un ejemplo, adáptalo y espero funcione

-- En este caso, se obtienen los 3 primeros registros

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
select * from
(
select a.folio,
	a.fecha,
	a.documento,
	b.articulo,
	b.descripcionarticulo,
	b.precio,
	ROW_NUMBER () OVER (PARTITION BY a.folio,
					a.fecha,
					a.documento,
					b.articulo,
					b.descripcionarticulo,
					b.precio ORDER BY a.folio,
					a.fecha,
					a.documento,
					b.articulo,
					b.descripcionarticulo, b.precio ASC) AS RN
from entradaencabezado a, entradadetalle b
) t1 where rn <=3
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

dos ultimos registros para cada ID de una tabla

Publicado por charly (3 intervenciones) el 08/01/2015 22:10:37
ISAIAS MUCHAS GRACIAS, CON LA FUNCION ROW_NUMBER LOGRE OBTENER LOS REGISTROS DESEADOS....
GRACIAS A TODOS
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
Imágen de perfil de Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

dos ultimos registros para cada ID de una tabla

Publicado por Isaias (1921 intervenciones) el 08/01/2015 23:11:18
un placer, saludos
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