У меня есть таблица (показывающая временную таблицу)
CREATE TABLE #TempTable
(
TempID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
CustID INT NOT NULL,
RODate DATE NULL,
Operation INT NULL
);
В этой таблице приведены данные для примера:
INSERT INTO #TempTable (CustID, RODate, Operation)
VALUES (10, DATEADD(MONT, -2, GETDATE()), 2),
(10, DATEADD(MONT, -1, GETDATE()), 3),
(10, GETDATE(), 5)
Таким образом, таблица имеет данные ниже
TempID CustID RODate Operation
-----------------------------------------------------------
1 10 2019-03-17 2
2 10 2019-04-17 3
3 10 2019-05-17 5
Требование: я получу одну целочисленную переменную в параметре, равную @noOfOperation
, допустим, ее значение равно 10
Я также не получу ни одного месяца в параметре, скажем, это 3
Iдолжен запросить таблицу, чтобы вернуть данные только за последние 3 месяца (исключая текущий месяц (дата по возрастанию)
Затем я должен вычесть @noOfOperation
из таблицы и обновить.
Удержание будетна основе наличия в столбце операций.
Например: в этом случае сначала мы вычтем из 2019-03-17
10 - 2 = 8 (operation column for this row becomes 0)
Далее мы вычтем из 2019-04-17
8 - 3 = 5 (operation column for this row becomes 0)
Аналогично для 2019-05-17
5-5 = 0 (operation column for this row becomes 0)
Я должен проверить, является ли @noOfOperation
меньше или больше числа операций в отдельных месяцах, затем выполните вышеуказанное соответственно