Трюк дня. Найти максимальное значение из двух колонок таблицы



Например, есть таблица:



customer value_1 value_2

Alex 5 18

Sam 1 19

Sam 3 2



В результате нужно получить следующее:



customer max

Alex 18

Sam 19

Sam 3





В PostgreSQL, MySQL и Oracle можно воспользоваться функцией GREATEST:



SELECT customer, GREATEST (value_1, value_2) FROM table;





В SQL Server подобной функции нет, поэтому можно решить эту задачу так:



SELECT customer, MAX (x.combined_val) AS greatest

FROM table AS u

CROSS APPLY (SELECT u.value_1 UNION ALL SELECT u.value_2) AS x(combined_val)

GROUP BY customer;



#tips