En mi caso tengo una tabla con 9 registros con un campo id unico e incremental
y requiero obtener la clasificación inferior y superior en un mismo registro, que se ingresaron de manera incrementalmente.
tablaOriginal
id     clasificación
1 12
2 16
3 20
4 25
5 30
6 35
7 40
8 45
9 100
tabla necesaria
1 0.00  12.00
2 12.00 16.00
3 16.00 20.00
4 20.00 25.00
5 25.00 30.00
6 30.00 35.00
7 35.00 40.00
8 40.00 45.00
9 45.00 100.00
SELECT 
TS.id,
TI  = ISNULL(TI.Clasificacion,0)
,TS = TS.Clasificacion
FROM tblTabla TS 
LEFT JOIN  tblTabla TI 
ON TI.id= TS.id-1
Se hace un SELECT de la tabla en el FROM con el alias TS (Superior)
y se hace un LEFT JOIN con la misma tabla pero con el alias TI (Inferior)
se utiliza un LEFT para que aunque no se encuentre coincidencia como seria en el caso del primer registro  regrese NULL entonces asumimos que no hay menor que ese registro y por tanto le ponemos el cero como valor mínimo con la instrucción ISNULL(TI.Clasificacion,0) esto debido a que en el ON de TI se busca el id de la tabla superior menos 1
Saludos
 
No hay comentarios:
Publicar un comentario