If the report's RecordSource query is returning rows which are exact duplicates over all columns then you should be able to return a single instance of each row by means of the DISTINCT predicate in the SELECT clause. The following simple query in Northwind,
for example, will return duplicate rows for those companies who have paid by credit card for more than one order:
SELECT Company, [Last Name], [First Name]
FROM Customers INNER JOIN Orders
ON Customers.ID = Orders.[Customer ID]
WHERE [Payment Type]="Credit Card"
ORDER BY Company;
The following, on the other hand will return one row per company by virtue of the use of the DISTINCT predicate:
SELECT DISTINCT Company, [Last Name], [First Name]
FROM Customers INNER JOIN Orders
ON Customers.ID = Orders.[Customer ID]
WHERE [Payment Type]="Credit Card"
ORDER BY Company;
If the report's RecordSource is not returning exact duplicates per row, however, then there may well be columns returned by the query which do not have distinct values over each subset of rows, but are not shown in the report. These redundant columns can be
removed from the SELECT clause. With the above example, for instance, the following variation would not return one row per company because the Order Date column, whose values are not distinct per company, has been included redundantly in the SELECT clause.
The DISTINCT predicate therefore achieves nothing:
SELECT DISTINCT Company, [Last Name], [First Name], [Order Date]
FROM Customers INNER JOIN Orders
ON Customers.ID = Orders.[Customer ID]
WHERE [Payment Type]="Credit Card"
ORDER BY Company;