0

我有一个 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;

我需要返回 unique PropertyIdsTo每个属性的最大值,以及BookingPriority与该最大值关联的To值。使用上面的分组,如果属性被多次列出并且不同的 a different ,我会得到多个结果BookingPriority

当我使用分组时,BookingPriority如果 Access 抛出错误,我无法删除分组。

我确定这与分组有关,但我不知道如何解决它。仅仅获得最大值或最小值BookingPriority并不能解决问题,因为值可能会改变。

4

1 回答 1

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,您将需要处理多个记录具有相同的最大“收件人”列的情况。

于 2013-01-27T14:27:16.627 回答