是否可以退出Oracle SQL查询中的案例?

时间:2017-04-23 19:25:23

标签: sql oracle

假设我有一个名为ABC的表:

Col Val 
a   1
b   3
c   2
a   3
b   6
c   7
a   5
b   9
c   9
a   7
b   2
c   8

SELECT MAX(CASE
WHEN COL = 'a'
THEN VAL
(exit_command_if_there_s_any)
WHEN COL = 'b'
THEN VAL*3
ELSE
VAL*4
END) AS "MAX_VAL"
FROM ABC;

基本上我想要的是这个查询返回COL =' a'的最大值。如果它存在于表中,则应该返回其他COL的最大值。 但如果COL =' a'在那里,它不应检查COL中的其他值,只需退出CASE。

2 个答案:

答案 0 :(得分:1)

这正是你所要求的 -
单个最大值,优先于ab,然后是其他值,乘以相应的值(无/ 3/4)。

select  coalesce
        (
            max(case when COL = 'a' then val end)
           ,max(case when COL = 'b' then val end) * 3
           ,max(val) * 4

        ) as "MAX_VAL"

from    ABC
+---------+
| MAX_VAL |
+---------+
|       7 |
+---------+

答案 1 :(得分:0)

如果您想获得最大值,请不要认为char* sizeToStr(ssize_t size){ char* s = NULL; if(size<=1023){ sprintf(s,"%.1dB",(1.0*size)); return s; } if(size<=1048575){ sprintf(s,"%.1dK",(1.0*size)/1024); return s; } if(size<=1073741823){ sprintf(s,"%.1dM",(1.0*size)/(1024*1024)); return s; } sprintf(s,"%.1dG",(1.0*size)/(1024*1024*1024)); return s; 。代替:

ssize_t

或者,将两个值放在同一列中:

case