У меня есть набор данных следующим образом:
Product Customer Sequence Amount
A 123 1 928.69
A 123 2 5032.81
A 123 3 6499.19
A 123 4 7908.57
Я хочу рекурсивно вычесть суммы, основанные на результате предыдущего вычитания (сохраняя первую сумму как есть), в столбце «Результат»
например. Вычтите 0 из 928,69 = 928,69, вычтите 928,69 из 5032,81 = 4104,12, вычтите 4104,12 из 6499,19 = 2395,07 и т. Д. (Для каждого продукта / клиента)
Я пытаюсь достичь следующих результатов:
Product Customer Sequence Amount Result
A 123 1 928.69 928.69
A 123 2 5032.81 4104.12
A 123 3 6499.19 2395.07
A 123 4 7908.57 5513.50
Я пытался добиться этого, используя комбинации LEAD и LAG, но не мог понять, как использовать результат в следующей строке.
Я думаю, что возможно использовать рекурсивное утверждение, повторяющееся по последовательности, однако я не знаком с рекурсией teradata и не смог успешно адаптировать найденные мной сэмплы.
Может кто-нибудь подсказать мне, как отформатировать рекурсивный оператор SQL teradata для достижения вышеуказанного результата? Я также открыт для нерекурсивных опций, если они есть.
CREATE VOLATILE TABLE MY_TEST (Product CHAR(1), Customer INTEGER, Sequence INTEGER, Amount DECIMAL(16,2)) ON COMMIT PRESERVE ROWS;
INSERT INTO MY_TEST VALUES ('A', 123, 1, 928.69);
INSERT INTO MY_TEST VALUES ('A', 123, 2, 5032.81);
INSERT INTO MY_TEST VALUES ('A', 123, 3, 6499.19);
INSERT INTO MY_TEST VALUES ('A', 123, 4, 7908.57);