SQL - dos ultimos registros para cada ID de una tabla

   
Vista:

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

dos ultimos registros para cada ID de una tabla

Publicado por Isaias Islas (690 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

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

dos ultimos registros para cada ID de una tabla

Publicado por Isaias (690 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

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

dos ultimos registros para cada ID de una tabla

Publicado por Isaias (690 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