I think I may have stumbled upon the answer. But to test it out fully, I'd need a sample of the data in your Table.
I you want to try and take it from my theoretical-stage to practical usage on your own, I've included my unfinished Query below.
Code:
SELECT
[FC_Outer].[Flags],
[FC_Outer].[Not_Accepted],
(
SELECT
[FC_Inner].[Flags]
FROM
Failed_Cols AS FC_Inner
WHERE
[FC_Inner].[ID]=[FC_Outer].[ID]
) AS [Values],
Max([FC_Outer].[DateRef]) AS [Date_Flagged],
[FC_Outer].[name]
FROM
Failed_Cols AS FC_Outer
WHERE
[FC_Outer].[DateRef]=[Enter Valuation Date:] Or
[FC_Outer].[DateRef]=[Enter Old Valn Date:]
GROUP BY
[FC_Outer].[Flags],
[FC_Outer].[Not_Accepted],
[Values]
[FC_Outer].[name]
HAVING
(
Count([FC_Outer].[name])=1 AND
Max([FC_Outer].[DateRef])=[Enter Valuation Date:]
) Or
Max([FC_Outer].[DateRef])=[Enter Old Valn Date:];
The spacing is just for readability. Once it's working, you can compress it down to a single line.
However, without seeing your actual data and knowing, I have no way of knowing if this will work (or even if it's what you want!).