MS Access查询:筛选每个IDBug最大Rev且Status为CLOSE的记录
解决MS Access SQL查询问题
要获取每个IDBug最大Rev层级下Status为"CLOSE"的记录,你需要先定位每个IDBug的最大Rev值,再关联原表筛选符合条件的记录,正确的SQL语句如下:
SELECT t.IDBug, t.Rev AS MaxDiRev, t.Status FROM tblCronologiaB_0 t INNER JOIN ( -- 子查询获取每个IDBug的最大Rev SELECT IDBug, Max(Rev) AS MaxRev FROM tblCronologiaB_0 GROUP BY IDBug ) max_revs ON t.IDBug = max_revs.IDBug AND t.Rev = max_revs.MaxRev WHERE t.Status = "CLOSE";
原语句错误原因
你原来的SQL同时按IDBug和Status分组,这会把同一IDBug下不同Status的记录拆分成独立分组计算Max(Rev)。比如IDBug=1中,Status为"CLOSE"的记录(Rev=3)会被单独分组取最大值,而该IDBug实际最大Rev是5且对应的Status不是"CLOSE",所以错误返回了这条不符合要求的记录。
内容的提问来源于stack exchange,提问作者Luca
相关产品推荐
相关产品推荐

