Oracle 12.1按A分组排除REV值取RE列最大值的实现咨询
Oracle 12.1 分组查询解决方案
嘿,针对你提出的按A列分组、处理RE列值的需求,我整理了一个简洁且精准的SQL方案,完美适配Oracle 12.1版本:
实现思路
核心逻辑分两步处理每个分组:
- 先过滤掉
RE列中的'REV'值,提取有效数据并取最大值 - 若分组里全是
'REV'(无有效数据),则将空结果替换为'REV'
SQL代码
SELECT A, NVL(MAX(CASE WHEN RE != 'REV' THEN RE END), 'REV') AS RES FROM your_table_name -- 替换成你的实际表名 GROUP BY A;
代码细节解释
CASE WHEN RE != 'REV' THEN RE END:把分组内所有'REV'值转为NULL,只保留非'REV'的有效记录MAX():聚合函数会自动忽略NULL值,直接得到分组内有效数据的最大值NVL():当分组里全是'REV'时,MAX()会返回NULL,NVL()会将这个空值替换为'REV',覆盖特殊场景的需求
结果验证
用你提供的输入数据测试,执行后会得到完全匹配预期的输出:
| A | RES |
|---|---|
| A1 | C2 |
| A2 | C6 |
| A3 | REV |
内容的提问来源于stack exchange,提问作者user15746603
相关产品推荐
相关产品推荐

