not sure if this is what you are after, this was my first guess
/*--Results
ClosestUnder ClosestOver
20 25
*/
;WITH MyCTE([Code],[Number],[Value])
AS
(
SELECT '5',convert(float,'10.00'),convert(money,'1.9201') UNION ALL
SELECT '5','15.00','1.9100' UNION ALL
SELECT '5','20.00','1.8937' UNION ALL
SELECT '5','25.00','1.8589' UNION ALL
SELECT '5','30.00','1.8700'
)
SELECT MAX(ClosestUnder) AS ClosestUnder,max(ClosestOver) AS ClosestOver
FROm (
SELECT MAX([Number]) As ClosestUnder,NULL ClosestOver FROM
MyCTE T1
WHERE [Number] <=20.7
UNION
SELECT NULL As ClosestUnder,MIN([Number]) ClosestOver
FROM MyCTE T2
WHERE [Number] > 20.7
) MyAlias
Lowell