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

Access查询需求:按规则生成PO单状态汇总表

Access查询实现PO状态汇总方案

先把你的需求用更清晰的方式整理下,方便对照:

原始数据表(假设表名为PO_Details)

POPNStatus
1AOpen
1Bprogress
1CDelivered
2AOpen
3ADelivered
3ADelivered

预期汇总结果

POStatus
1PROGRESS
2OPEN
3Delivered

这里给你两种实用的Access查询方案,都能完美匹配你设定的状态规则:


方案一:使用EXISTS子查询 + IIF函数(逻辑直观易维护)

这种方式完全按照你给出的规则顺序来判断,可读性很强:

SELECT 
    PO,
    IIF(
        -- 规则1:存在progress或Delivered状态,PO设为PROGRESS
        EXISTS(SELECT 1 FROM PO_Details AS sub WHERE sub.PO = main.PO AND sub.Status IN ('progress', 'Delivered')),
        'PROGRESS',
        IIF(
            -- 规则2:仅存在OPEN状态,PO设为OPEN
            EXISTS(SELECT 1 FROM PO_Details AS sub WHERE sub.PO = main.PO AND sub.Status = 'Open') 
            AND NOT EXISTS(SELECT 1 FROM PO_Details AS sub WHERE sub.PO = main.PO AND sub.Status NOT IN ('Open')),
            'OPEN',
            -- 规则3:所有物料状态一致,取该状态
            (SELECT TOP 1 Status FROM PO_Details AS sub WHERE sub.PO = main.PO)
        )
    ) AS Status
FROM PO_Details AS main
GROUP BY PO;

逻辑说明:

  1. 先通过GROUP BY PO确保每个采购订单只返回一条记录
  2. 第一层判断优先检查是否存在符合规则1的状态,满足就直接返回PROGRESS
  3. 不满足规则1的话,再检查是否所有物料都是Open状态(规则2),满足则返回OPEN
  4. 最后兜底的情况就是所有物料状态一致,直接取任意一条的状态即可

方案二:使用SWITCH函数 + 聚合统计(代码更简洁)

如果喜欢更紧凑的写法,可以用SWITCH结合聚合函数来实现:

SELECT 
    PO,
    SWITCH(
        -- 规则1:存在progress或Delivered状态
        COUNT(IIF(Status IN ('progress', 'Delivered'), 1, NULL)) > 0, 'PROGRESS',
        -- 规则2:所有物料都是Open状态
        COUNT(IIF(Status = 'Open', 1, NULL)) = COUNT(*), 'OPEN',
        -- 规则3:所有状态一致,取该状态
        TRUE, (SELECT TOP 1 Status FROM PO_Details AS sub WHERE sub.PO = PO_Details.PO)
    ) AS Status
FROM PO_Details
GROUP BY PO;

逻辑说明:

  • COUNT(IIF(...))用来统计符合特定状态的记录数,NULL会被COUNT忽略
  • 第一个条件判断是否有规则1的状态记录,有就返回PROGRESS
  • 第二个条件判断Open状态的记录数等于总记录数(也就是全是Open),返回OPEN
  • 最后TRUE分支处理所有状态一致的情况

小提示:

如果你的数据里状态值大小写不统一(比如Progress和progress混存),可以用UCASE(Status)来统一判断,比如把Status IN ('progress', 'Delivered')改成UCASE(Status) IN ('PROGRESS', 'DELIVERED'),避免因为大小写导致的判断错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 18:02:25