Я пишу сценарий SQL в Visual Studio, и у меня есть 2 таблицы, одна из которых называется ATB
, которая имеет уникальные строки для Account ID
с, а вторая таблица тоже содержит AccountID
, а другой столбец называется SettlementTypeID
этот второй столбец имеет повторяющиеся значения, поскольку в нем хранятся записи об изменениях, выполненных в AccountID
, что означает, что он может иметь 10 строк с таким же AccountID
, но с другим Lastmodified
столбцом даты.
IЯ делаю соединение между ними, чтобы получить SettlementTypeID
для каждого AccountID
в таблице ATB
, используя MAX(LastModifiedDate)
, чтобы избежать получения дубликатов значений, но для некоторых AccountIDs
не работает вообще
Ниже приведен мой текущий код:
SELECT
t.AccountID,
r.SettlementTypeID,
r.LastModifiedDate
FROM
(SELECT
accs.AccountID,
accs.SettlementTypeID,
MAX(accs.LastModifiedDate) AS LastModifiedDate
FROM
AccountSettlement accs
INNER JOIN
#ATB atb WITH (nolock) ON atb.AccountID = accs.AccountID
WHERE
atb.ReferenceType = 'Settlement'
AND atb.SettlementType IS NULL
GROUP BY
accs.AccountID, accs.SettlementTypeID) r
INNER JOIN
AccountSettlement t ON t.AccountID = r.AccountID
AND t.SettlementTypeID = r.SettlementTypeID
AND t.LastModifiedDate = r.LastModifiedDate
Я не знаю, что я делаю неправильно, но когда я удаляю столбец SettlementTypeID
и просто оставляю столбцы accountID
и LastmodifiedDate
, он работает, как ожидалось.
Ниже приведена небольшая часть того, что я получаю:

И это данные, которые скрипт долженпредоставлять на основании максимальной найденной даты:
