我有一个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
将无法解决问题,因为值可能会发生变化。
答案 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”列。