首页 > 解决方案 > ms access sql - 在选择子查询中选择案例

问题描述

我有一张每人多行的表格,如果标志是肯定的,则需要每人获得一行和最大分数,以及其他内容(这只是本示例的列的片段)

数据表

qtime 旗帜 分数
鲍勃 第一季度 4
鲍勃 季度2 6
鲍勃 第四季度 3
爱丽丝 第一季度 4
爱丽丝 季度2 是的 7
爱丽丝 第 3 季 是的 9
select
    person,
    max(score) as maxScore,
    case 
       when person in (select person from data where flag = 'yes') 
          then 1 
          else 0 
    end as flagYes
from
    data
group by 
    person

这在 Microsoft SQL 服务器中可以正常工作,但在 MS Access SQL 中我得到

语法错误(查询表达式中缺少运算符)

我可以在子查询中使用别名,如果这会让事情看起来不会引起问题,但它们不会使查询摆脱这个错误。

标签: sqlms-accesssubquery

解决方案


MS Access 不支持case表达式。您可以IIF()改用:

select d.person, max(d.score) as maxScore,
       iif(d.person in (select d2.person from data as d2 where d2.flag = 'yes'), 1, 0) as flagYes
from data as d
group by person

推荐阅读