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

SQL Server如何筛选不包含指定子状态的caseid记录

SQL Server 实现方案

实现逻辑

按caseid对审计记录做分组后,通过聚合判断两个过滤条件是否满足:

  • 该caseid对应的所有子状态不存在禁止列表中的值
  • 该caseid对应的所有子状态全部属于允许列表中的值

分组聚合写法(仅返回符合条件的caseid)

SELECT caseid
FROM [你的实际表名]
GROUP BY caseid
HAVING
    -- 无禁止子状态
    COUNT(CASE WHEN auditcasesubstatusname IN (
        'Missing Document No Action', 
        'Missing Document Action Required', 
        'Referral Request'
    ) THEN 1 END) = 0
    -- 所有子状态都在允许范围内
    AND COUNT(CASE WHEN auditcasesubstatusname NOT IN (
        'Checklist Complete', 
        'All Documents Available', 
        'Review Complete'
    ) THEN 1 END) = 0

样例验证

针对提供的测试数据:

  • caseid=1的两个子状态都属于允许列表、无禁止状态,会正常返回
  • caseid=41存在禁止状态Referral Request,同时存在允许列表外的状态Checklist Review,会被过滤排除,符合预期要求。

扩展写法(支持返回case的其他关联字段)

如果需要同时返回case的类型、状态等其他字段,可以用NOT EXISTS实现:

SELECT DISTINCT caseid, casetypename, auditcasestatusname
FROM [你的实际表名] t1
WHERE NOT EXISTS (
    SELECT 1
    FROM [你的实际表名] t2
    WHERE t2.caseid = t1.caseid
    AND (
        t2.auditcasesubstatusname IN ('Missing Document No Action', 'Missing Document Action Required', 'Referral Request')
        OR t2.auditcasesubstatusname NOT IN ('Checklist Complete', 'All Documents Available', 'Review Complete')
    )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:06:01