访问数据库查询分组

时间:2013-01-27 13:36:29

标签: ms-access grouping

我有一个Access 2003数据库我被要求尝试修改。我的MS Access技能有限,因此这个问题。

查询如下所示:

SELECT
  TBL_PropertyProgramMember.PropertyId,
  Max(TBL_PropertyProgramMember.To) AS MaxOfTo,
  TBL_PropertyProgramMember.BookingPriority
FROM
  TBL_PropertyProgramMember
GROUP BY
  TBL_PropertyProgramMember.PropertyId,
  TBL_PropertyProgramMember.BookingPriority;

我需要返回唯一PropertyIds,每个属性的最大To值以及与该最大BookingPriority值相关联的To。使用上面的分组,如果不同的BookingPriority不同地列出属性,我会得到多个结果。

由于我正在使用分组功能,因此无法在没有Access的情况下删除BookingPriority分组。

我确定这与分组有关,但我无法解决如何修复它。只获得最大值或最小值BookingPriority将无法解决问题,因为值可能会发生变化。

1 个答案:

答案 0 :(得分:2)

您必须计算最大值(不返回BookingPriority)然后再次加入结果,如下所示: -

SELECT 
TBL_PropertyProgramMember.PropertyID, 
M.MaxTo, 
TBL_PropertyProgramMember.BookingPriority

FROM 
(
SELECT 
TBL_PropertyProgramMember.PropertyID, 
Max(TBL_PropertyProgramMember.To) AS MaxTo
FROM 
TBL_PropertyProgramMember
GROUP BY 
TBL_PropertyProgramMember.PropertyID
) AS M 
INNER JOIN 
TBL_PropertyProgramMember 
ON (M.MaxTo = TBL_PropertyProgramMember.To) 
AND (M.PropertyID = TBL_PropertyProgramMember.PropertyID);

您需要处理的情况是,对于给定的BookingPriority,有多个记录具有相同的最大“To”列。