簡體   English   中英

在 select 子查詢中的毫秒訪問 sql - select 情況

[英]ms access sql - select case when in select subquery

我有一張每人多行的表格,如果標志是肯定的,則需要每人獲得一行和最大分數,以及其他內容(這只是本示例的列的片段)

數據表

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 我得到

語法錯誤(查詢表達式中缺少運算符)

我可以在子查詢中使用別名,如果這會讓事情看起來不會引起問題,但它們不會使查詢擺脫這個錯誤。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM