Жаль, что в SQL Server его нет, но, к счастью, в Oracle и PostgreSQL есть.
Но SQL Server допускает и другие вещи, такие как выбор без таблицы (бизнес "FROM DUAL"; MySQL тоже поддерживает это), а также подзапросы, которые ссылаются на уровни таблицы 2, как запрос ниже
select a,b,c,d,
(
select max(a)
from
(select a union all
select b union all
select c union all
select d) columnstorows
) greatest
from (select 1 as a,2 as b,null as c,4 as d) virtualtable
Нет бизнеса ISNULL, просто макс.
Как упоминал OMG Ponies, MySQL GREATEST требует IFNULL вокруг каждого столбца. Но даже это не полный ответ. Если вы используете IFNULL и предоставляете «виртуальный минимум» для каждого, вы можете получить неправильный ответ, когда все значения равны нулю. Вы должны IFNULL их в другой столбец, либо поверните их, либо просто любой другой столбец будет действительно.
select
a,b,c,d,
greatest(ifnull(a,b), ifnull(b,c), ifnull(c,d), ifnull(d,a))
from (select 1 as a,2 as b,null as c,4 as d) virtualtable