Звучит так, будто вам нужна последняя MSDSdate для каждого RMCode.
SELECT RMCode, Max(MSDSdate) AS MaxOfMSDSdate
FROM TableB
GROUP BY RMCode;
Если это правильно, вы можете использовать его как suquery, присоединенный к TableA, и добавить в предложение WHERE, чтобы исключить строки с DangerousGood = "N / A".
SELECT a.RMCode, a.DangerousGood, b.MaxOfMSDSdate
FROM
TableA AS a
INNER JOIN [
SELECT RMCode, Max(MSDSdate) AS MaxOfMSDSdate
FROM TableB
GROUP BY RMCode
]. AS b
ON a.RMCode = b.RMCode
WHERE (((a.DangerousGood)<>"N/A"));
Наконец, если вам нужны значения linkMSDS для каждой из этих комбинаций RMCode / MSDSdate, вы можете присоединиться к другой копии TableB.
SELECT a.RMCode, a.DangerousGood, b.MaxOfMSDSdate, b2.linkMSDS
FROM
(TableA AS a
INNER JOIN [
SELECT RMCode, Max(MSDSdate) AS MaxOfMSDSdate
FROM TableB
GROUP BY RMCode
]. AS b
ON a.RMCode = b.RMCode)
INNER JOIN TableB AS b2
ON (b.RMCode = b2.RMCode) AND (b.MaxOfMSDSdate = b2.MSDSdate)
WHERE (((a.DangerousGood)<>"N/A"));