You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 10g中如何按Pat_no、Pat_id分组输出单行状态结果?

解决Oracle 10g中分组判断全量标志的问题

这个需求其实挺常见的,咱们可以借助Oracle的聚合函数快速实现分组后的统一判断,下面给你两种实用的方案:

方案一:利用MIN()或MAX()函数

字符在Oracle里是按ASCII码比较的,'N'的ASCII值(78)比'Y'(89)小。所以如果组内存在任意一条doc_flag为'N'的记录,MIN(doc_flag)就会返回'N';要是全组都是'Y',MIN()和MAX()都会返回'Y'。

对应的SQL语句:

SELECT 
    Pat_no,
    Pat_id,
    MIN(doc_flag) AS doc_flag
FROM 
    your_table_name  -- 替换成你的实际表名
GROUP BY 
    Pat_no, Pat_id;

方案二:CASE WHEN结合条件计数

这种方式逻辑更直白,直接统计组内是否存在'N'的记录:

SELECT 
    Pat_no,
    Pat_id,
    CASE 
        WHEN COUNT(CASE WHEN doc_flag = 'N' THEN 1 END) > 0 THEN 'N'
        ELSE 'Y'
    END AS doc_flag
FROM 
    your_table_name  -- 替换成你的实际表名
GROUP BY 
    Pat_no, Pat_id;

效果验证

  • 当组内所有doc对应的doc_flag都是'Y'时,两种方案都会返回单行结果:
    Pat_noPat_iddoc_flag
    A1123Y
  • 只要组内有任意一条记录的doc_flag是'N',结果就会变成:
    Pat_noPat_iddoc_flag
    A1123N

这两种方案在Oracle 10g里都能正常运行,你可以根据自己的习惯选一种用~

内容的提问来源于stack exchange,提问作者aim_thebest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:27:22