SELECT
S.StoreID,
S.BranchName,
A.QuestionID,
T.Created,
A.*
FROM
tblStore S
INNER JOIN tblTransaction T ON
T.StoreID = S.StoreID
INNER JOIN tblAnswer A ON
A.TransactionID = T.TransactionID AND
A.StoreID = S.StoreID
WHERE NOT EXISTS
(
SELECT
T2.StoreID,
A2.QuestionID,
T2.TransactionID,
T2.CreatedDate
FROM
tblTransaction T2
INNER JOIN tblAnswer A2 ON
A2.TransactionID = T2.TransactionID AND
A2.StoreID = T2.StoreID
WHERE
T2.StoreID = T.StoreID AND
A2.QuestionID = A.QuestionID AND
T2.CreatedDate > T.CreatedDate
)
Вы также можете сделать это LEFT OUTER, присоединившись к подзапросу по тем же критериям, что и в предложении WHERE, и найдя в нем значение NULL, или вы можете удалить TransactionID из подзапроса, используя MAX () для CreatedDate, и посмотреть для совпадения с ВНУТРЕННИМ СОЕДИНЕНИЕМ.
Имейте в виду, что это может не действовать так, как вы ожидаете, если у вас есть несколько транзакций для одного магазина с одной и той же датой создания. Вам может потребоваться добавить дополнительные критерии в зависимости от ваших бизнес-правил в этой ситуации.