At start, create a saved query (I'll give SQL syntax for queries) p.e. qryLastPipeClassRevisions:
Code:
SELECT DISTINCT
mto.ProjectCode, mto.MTORevision, mto.MTORevisionDate, pipe.PipeClass,
(SELECT MAX(pipe0.PipeClassRevisionDate) FROM tblPrjPipeClassMaster AS pipe0
WHERE pipe0.ProjectCode = mto.ProjectCode AND pipe0.PipeClass = pipe.PipeClass
AND pipe0.PipeClassRevisionDate <= mto.MTORevisionDate GROUP BY pipe0.ProjectCode, pipe0.PipeClass) AS LastPipeClassRevisionDate
FROM tblPrjMTORevision AS mto INNER JOIN tblPrjPipeClassMaster AS pipe ON mto.ProjectCode = pipe.ProjectCode;
Then use this query as base for your report SQL:
Code:
SELECT qlast.ProjectCode, qlast.MTORevision, qlast.MTORevisionDate,
qlast.PipeClass, pipe.PipeClassRevision, qlast.LastPipeClassRevisionDate
FROM qryLastPipeClassRevisions AS qlast INNER JOIN tblPrjPipeClassMaster AS pipe
ON (qlast.LastPipeClassRevisionDate = pipe.PipeClassRevisionDate)
AND (qlast.PipeClass = pipe.PipeClass)
AND (qlast.ProjectCode = pipe.ProjectCode);