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

如何在MS Access中筛选关联索赔均非Selected状态的Open案件

适用于MS Access的查询语句

可以通过排除存在"Selected"索赔的案件来实现需求,以下是两种可行的SQL写法:

方法一:使用NOT EXISTS子查询

SELECT t2.*
FROM table2 t2
INNER JOIN table1 t1 ON t2.[案件号] = t1.[案件号]
WHERE t1.[Case Status] = 'Open'
AND NOT EXISTS (
    SELECT 1
    FROM table2 t2_sub
    WHERE t2_sub.[案件号] = t1.[案件号]
    AND t2_sub.[Claim Status] = 'Selected'
);

逻辑说明

  1. 用INNER JOIN关联案件表(table1)和索赔表(table2),确保只处理table1中存在的案件
  2. 筛选出table1里Case Status为Open的案件
  3. 通过NOT EXISTS子查询排除那些在table2中存在至少一条"Selected"状态索赔的案件,剩下的就是所有索赔都非"Selected"的Open案件,最终返回这些案件的全部索赔记录

方法二:使用GROUP BY和HAVING子句先筛选符合条件的案件

SELECT t2.*
FROM table2 t2
INNER JOIN (
    SELECT t1.[案件号]
    FROM table1 t1
    INNER JOIN table2 t2_sub ON t1.[案件号] = t2_sub.[案件号]
    WHERE t1.[Case Status] = 'Open'
    GROUP BY t1.[案件号]
    HAVING SUM(IIF(t2_sub.[Claim Status] = 'Selected', 1, 0)) = 0
) qualified_cases ON t2.[案件号] = qualified_cases.[案件号];

逻辑说明

  1. 子查询qualified_cases先找出所有符合条件的案件:
    • 关联table1和table2,筛选Open状态的案件
    • 按案件号分组,用SUM(IIF(...))统计每个案件中"Selected"索赔的数量,数量为0的就是所有索赔都非"Selected"的案件
  2. 再将table2和这些合格案件关联,返回对应的索赔记录

两种方法都能满足需求,小数据量下效率差异不大,大数据量时NOT EXISTS通常更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:03:18