2014-09-12 26 views
1

我想从另一个查询结果中选择MAX,它返回的值只有一列。Sql从结果列中选择最大值

这给我列了所有从中我想,只选择最高值的查询是:

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

使用你的第一个查询作为子查询,但在一个字段中使用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 

,或者如果不是有

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 
+0

太好了!非常感谢 – DavidDunham 2014-09-12 10:24:20

+0

现在我将如何添加另一列的选择(比方说ID列)。所以我在我的表中有4行,想要的ID(1,2,3,4),也是MAX作为第二列(每行MAX) – DavidDunham 2014-09-12 10:37:36

+0

@Silvanmidix顺便说一下,你的dbms是什么? – 2014-09-12 10:39:15

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