ms access sql - 在选择子查询中选择大小写

问题描述

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

数据表

qtime 标志 得分
鲍勃 第一季度 4
鲍勃 第二季度 没有 6
鲍勃 第四季度 没有 3
爱丽丝 第一季度 没有 4
爱丽丝 第二季度 是的 7
爱丽丝 第三季度 是的 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 中我得到

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

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

解决方法

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