Similar to pbaldy's pointer, you could create a tblOptionMax containing 3 fields id, refField and currentMaxValue. Then create a delete query to remove all rows from tblOptionMax. Follow this with an append query to insert into tblOptionMax all ids, firstFieldName and field1 from the original table say tblOption . Now write update query to compare tblOptionMax.currentMaxValue with nz(tblOption.field2) and update tblOptionMax.refField and tblOptionMax.currentMaxValue appropriately. Do a similar query for each of the other fields. After you run the last update query, tblOptionMax will have the refField and max value across fields.