To continue reading for free, register below or login
To read more you must become a member of SearchOracle.com
');
// -->

The answer to your question is the GREATEST function.
However, we must make a couple of small changes to your
expressions to make the query work.
select greatest(
( select max(col1) from table1 )
, ( select max(col2) from table2 )
) as col3
Here each subquery produces a single value, and then GREATEST,
which is a scalar function—as opposed to
MAX, which is an aggregate function—selects
the higher of those values.
If your particular database system does not support the
standard SQL GREATEST function, use this:
select case when max1 > max2
then max1
else max2
end as col3
from ( select max(col1) as max1
from table1
) as t1
cross
join ( select max(col2) as max2
from table2
) as t2
Why a cross join? Because each of the derived tables (t1 and t2)
returns only one row, so the cross join produces
only one row, with two columns, max1 and max2.
Note that GREATEST can take any number of values. The CASE
approach, however, becomes complex and cumbersome
for more than two values.
|