June7 - Thank you very much for the comment. I don't believe I have used the method you suggested, but it did prompt me into another way of thinking and I have been able to get the result I was after.
It does, at first glance, appear to be slightly messier/longer; but it's simpler and is a way I was able to write and understand fully. For those who are interested, I've produced my methodology below.
Query 1 (AggregateQueryMin)
Code:
SELECT AggregateCapacity.SANName, AggregateCapacity.AggregateName, MIN(AggregateCapacity.Date) AS FirstDate
FROM AggregateCapacity
WHERE ((AggregateCapacity.Date) Between (Forms!FrontPage!SelectStart) And (Forms!FrontPage!SelectEnd))
GROUP BY AggregateCapacity.SANName, AggregateCapacity.AggregateName;
Query 2 (AggregateQueryMINDetail)
Code:
SELECT AggregateCapacity.Used, AggregateCapacity.Total, AggregateQueryMIN.SANName, AggregateQueryMIN.AggregateName, AggregateQueryMIN.FirstDate
FROM AggregateCapacity INNER JOIN AggregateQueryMIN ON (AggregateCapacity.Date=AggregateQueryMin.FirstDate) AND (AggregateCapacity.AggregateName=AggregateQueryMin.AggregateName) AND (AggregateCapacity.SANName=AggregateQueryMIN.SANName);
I've then done these same queries, but with 'MAX' replacing 'MIN' - in both Queries and Query names.
Query 3 (AggregateComparisons)
Code:
SELECT AggregateQueryMINDetail.SANName, AggregateQueryMinDetail.AggregateName, AggregateQueryMinDetail.Used AS FirstUsed, AggregateQueryMinDetail.Total As FirstTotal, AggregateQueryMAXDetail.Used AS LastUsed, AggregateQueryMAXDetail.Total AS LastTotal
FROM AggregateQueryMINDetail
INNER JOIN AggregateQueryMAXDetail
ON AggregateQueryMINDetail.SANName=AggregateQueryMaxDetail.SanName AND AggregateQueryMINDetail.AggregateName=AggregateQueryMAXDetail.AggregateName;