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