Мне нужно получить общую сумму за последние 3 транзакции каждого клиента за предыдущий месяц.Допустим, сегодня 2012/1/31.
Пожалуйста, предоставьте пошаговый ответ о том, почему вы используете подход, который вы используете.
Например, вот ответ, который я подумал,Это может быть неправильно.
- Создать курсор для итерации по группе таблиц CustomerTransaction по CustomerName
- Создать внутренний запрос, чтобы получить последние 3 транзакции клиента за предыдущий месяц (используя select top 3), вставьте его во временную таблицу
- Выберите результат во временной таблице и получите сумму (Amount) и сгруппируйте ее по CustomerName.
Так что яиметь таблицу CustomerTransaction со следующими столбцами:
ID, CustomerName, Amount, TransactionDate
Вот скрипт, если он вам нужен.Я использую его для проверки результата.
insert into Test.dbo.CustomerTransaction (CustomerName, Amount, TransactionDate)
values ('John', 100.0, '2011-12-31'),
('John', 100.0, '2011-12-30'),
('John', 100.0, '2011-12-29'),
('John', 100.0, '2011-12-28'),
('Boyd', 100.0, '2011-12-30'),
('Boyd', 200.0, '2011-12-29'),
('Boyd', 100.0, '2011-12-28'),
('Boyd', 100.0, '2011-12-27')