这里是如何做到这一点与MAX()... KEEP():
SELECT sgb_id,
MAX (sgb_term_code_eff) max_term,
MAX (sgb_typ_code)
KEEP (DENSE_RANK FIRST
ORDER BY sgb_term_code_eff DESC) sgb_typ_code
FROM sgb
GROUP BY sgb_id
ORDER BY 1
完整的示例:
with sgb (sgb_id, sgb_term_code_eff, sgb_typ_code) AS
(SELECT 1, 'A', 'ACODE' FROM DUAL UNION ALL
SELECT 1, 'B', 'BCODE' FROM DUAL UNION ALL
SELECT 1, 'Z', 'ZCODE' FROM DUAL UNION ALL
SELECT 1, 'D', 'DCODE' FROM DUAL UNION ALL
SELECT 2, 'A', 'ACODE' FROM DUAL UNION ALL
SELECT 2, 'Q', 'QCODE' FROM DUAL UNION ALL
SELECT 2, 'Q', 'QCODE' FROM DUAL UNION ALL
SELECT 3, 'A', 'ACODE' FROM DUAL)
SELECT sgb_id,
MAX (sgb_term_code_eff) max_term,
MAX (sgb_typ_code) KEEP (DENSE_RANK FIRST ORDER BY sgb_term_code_eff DESC) sgb_typ_code
FROM sgb
GROUP BY sgb_id
ORDER BY 1
SGB_ID MAX_TERM SGB_TYP_CODE
-------------------------------------- -------- ------------
1 Z ZCODE
2 Q QCODE
3 A ACODE
请出示样本数据和预期昨日输出 – OldProgrammer
固定。感谢您的输入。 – Lyndey