• Thanks, but now I'm getting a different error : -

    Msg 8115, Level 16, State 2, Line 5

    Arithmetic overflow error converting expression to data type float.

    my actual query is : -

    declare @radius decimal(18,2)

    DECLARE @radians float

    SELECT @radians = 57.295779513082323 --> 180/PI

    SELECT @radius=5

    ;with cteDistCalc

    as(

    SELECT t1.*,

    DistanceInMiles = 3963.0*acos(sin(t1.Latitude/(@radians)) * sin(t2.Latitude/(57.295779513082323))

    + cos(t1.Latitude/(@radians)) * cos(t2.Latitude/(@radians)) * cos(t2.Longitude/(@radians) - t1.Longitude/(@radians)))

    FROM dbo.postcodes t1

    JOIN dbo.postcodes t2

    on t1.Latitude between t2.Latitude - @radius and t2.Latitude + @radius

    and t1.Longitude between t2.Longitude - @radius and t2.Longitude + @radius

    where t1.postcode='SM4 6DX'

    )

    select * from cteDistCalc WHERE DistanceInMiles < @radius

    ORDER BY DistanceInMiles

    [/code}