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

MS Access SQL中CASE WHEN搭配IN子查询报语法错误如何解决

错误原因

MS Access 对标准 SQL 的CASE表达式支持度较低,且不支持在聚合查询的SELECT子句中直接嵌套IN子查询作为条件判断,这是触发语法报错的核心原因。

解决方案

推荐使用性能更优、兼容性更好的IIF+聚合函数写法,无需子查询即可实现需求:

SELECT
    person,
    MAX(score) AS maxScore,
    MAX(IIF(flag = 'yes', 1, 0)) AS flagYes
FROM
    data
GROUP BY
    person

方案说明

该写法利用聚合函数MAX的特性:只要该人员存在任意一条flag = 'yes'的记录,IIF返回的1就会成为最大值,最终flagYes为1;如果所有记录的flag都不为yes,则返回0,完全匹配需求。

如果确实需要用子查询逻辑实现,也可以改成左连接的兼容写法:

SELECT
    t1.person,
    t1.maxScore,
    IIF(t2.person IS NOT NULL, 1, 0) AS flagYes
FROM
    (SELECT person, MAX(score) AS maxScore FROM data GROUP BY person) AS t1
LEFT JOIN
    (SELECT DISTINCT person FROM data WHERE flag = 'yes') AS t2
ON t1.person = t2.person

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 19:15:03