
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
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


0