Sql从结果列中选择max

时间:2014-09-12 10:18:32

标签: sql oracle max

我试图从另一个查询结果中选择MAX,该结果只返回一个带有值的列。

这个查询为我提供了我想要只选择最大值的所有值的列:

SELECT perfy as perf
FROM aasv_chart5
UNION
SELECT perfcumu as perf
FROM aasv_chart5

返回

PERF
-2.9
1.4
12.5
14

现在我想从中选择最大值。我试过像..

select MAX(SELECT perfy as perf
    FROM aasv_chart5
    UNION
    SELECT perfcumu as perf
    FROM aasv_chart5) FROM aasv_chart5

2 个答案:

答案 0 :(得分:2)

将您的第一个查询用作子查询,但在字段上使用MAX,而不是在查询上使用

SELECT MAX(perf) from 
  (SELECT perfy as perf
   FROM aasv_chart5
   UNION
   SELECT perfcumu as perf
   FROM aasv_chart5) s

取决于您的dbms,您也可以

select max(greatest(perfy, perdcumu))
from aasv_chart5

greatest不在那里

select max(case when perfy > perdcumu then perfy else perdcumu end)
from aasv_chart5

修改

从你的评论

,你可以做到

select id, 
  (select max(greatest(perfy, perdcumu))
  from aasv_chart5) as maxVal
from aasv_chart5

select id, s.maxval
from aasv_chart5
cross join  (select max(greatest(perfy, perdcumu)) as maxval
  from aasv_chart5) s

答案 1 :(得分:1)

SELECT max(abc.perf)
FROM
(SELECT perfy as perf
    FROM aasv_chart5
    UNION
    SELECT perfcumu as perf
    FROM aasv_chart5) as abc