Спираючись на блискучу логіку / код від mathematix та scottyc, я подаю:
DECLARE @a INT, @b INT, @c INT = 0
WHILE @c < 100
BEGIN
SET @c += 1
SET @a = ROUND(RAND()*100,0)-50
SET @b = ROUND(RAND()*100,0)-50
SELECT @a AS a, @b AS b,
@a - ( ABS(@a-@b) + (@a-@b) ) / 2 AS MINab,
@a + ( ABS(@b-@a) + (@b-@a) ) / 2 AS MAXab,
CASE WHEN (@a <= @b AND @a = @a - ( ABS(@a-@b) + (@a-@b) ) / 2)
OR (@a >= @b AND @a = @a + ( ABS(@b-@a) + (@b-@a) ) / 2)
THEN 'Success' ELSE 'Failure' END AS Status
END
Хоча стрибок з функції MIN Scottyc на функцію MAX повинен був бути очевидним для мене, але цього не було, тому я вирішив це і включив сюди: SELECT @a + (ABS (@ b- @ a) + ( @ b- @ a)) / 2. Довільно генеровані числа, хоча і не є доказами, повинні хоча б переконати скептиків у тому, що обидві формули є правильними.