У меня есть таблица, которая содержит моментальный снимок с указанием момента времени:Обновление MS Access SQL в последовательности
| Cust # | Последняя транс. | Заряд | Количество |
Каждый месяц я получаю файл от третьего лица с транзакциями, которые будут добавлять новый cust # или изменять существующую информацию о клиенте. У меня проблемы, когда в один месяц есть несколько обновлений для одного и того же Cust #.
Например:
обработки следующий файл транзакций:
должен уступить следующий снимок таблицы:
Это не может быть лучшим способом, но теперь у меня есть 3 отдельных запроса для обработки NEW, CHANGE и CANCEL. Нет проблем с NEW и CANCEL.
Вот как мой CHANGE запрос устанавливается:
UPDATE snp
INNER JOIN tr
ON snp.[Cust#] = tr.[Cust#]
SET
snp.[Last Trans] = tr.Transaction,
snp.Charge = snp.Charge + tr.Charge,
snp.Quantity = tr.Quantity
WHERE tr.Trans='CHANGE'
Обратите внимание, что зарядка является инкрементный и количество не является. Обновление Charge работает так, как ожидалось, но Quantity is not. Я не обязательно получаю последнее количество.
Как я могу гарантировать, что если есть какие-либо изменения для одного клиента, то последнее поле Количество взято из последней строки CHANGE (т.е. максимального идентификатора этого cust #)?