Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按最大排除值分组_Sql_Oracle - Fatal编程技术网

Sql 按最大排除值分组

Sql 按最大排除值分组,sql,oracle,Sql,Oracle,我有下面的输入,希望为每个A获得一个值。从“RE”列中不等于“REV”的值中,获得它们的最大值。如果特定“A”的列“RE”中只有REV值,则返回“REV” 我的Oracle版本是12.1 输入 预期输出(不需要解释列) 一种方法将聚合与coalesce()一起使用: 选择一个, 合并(最大值(重新“旋转”然后重新结束时的情况), 最大值(re) ) 从输入 一组一组; 第一个max()获取所有非修订行的最大值。当所有行都是'REV'时,第二行返回max()。实际上,您也可以将其替换为'REV'

我有下面的输入,希望为每个A获得一个值。从“RE”列中不等于“REV”的值中,获得它们的最大值。如果特定“A”的列“RE”中只有REV值,则返回“REV”

我的Oracle版本是12.1

输入

预期输出(不需要解释列)


一种方法将聚合与
coalesce()
一起使用:

选择一个,
合并(最大值(重新“旋转”然后重新结束时的情况),
最大值(re)
)
从输入
一组一组;
第一个
max()
获取所有非修订行的最大值。当所有行都是
'REV'
时,第二行返回
max()
。实际上,您也可以将其替换为
'REV'

A   RE
--  --
A1  REV
A1  C1
A1  C2
A2  REV
A2  REV
A2  C6
A3  REV
A   RES EXPLANATION
--  --- -----------
A1  C2  There are values C1 and C2 (excluding REV), so C2 is the max
A2  C6  There is just value C6 (excluding REV).
A3  REV There are no values other than REV.
select a,
       coalesce( max(case when re <> 'REV' then re end),
                 max(re)
               )
from input
group by a;