<Do what you need to do you populate the table, excluding the last row>
INSERT INTO
@tbl (
id,
princ
)
SELECT
MAX(id) + 1,
@amt - SUM(princ)
FROM
@tbl
Или, возможно, с CTE ...
WITH
recursive_distribution AS
(
SELECT 0 AS id, CAST(@amt / @term AS INT) AS princ
UNION ALL
SELECT id + 1, princ
FROM recursive_distribution
WHERE id < @term - 1
UNION ALL
SELECT 1, @amt - (princ * (@term-1))
FROM recursive_distribution
WHERE id = @term - 1
)
INSERT INTO
@tbl (id, princ)
SELECT
id, princ
FROM
recursive_distribution
WHERE
id > 0
OPTION
(MAXRECURSION 0) -- Only needed if @term >= 100
(начиная с 0, затем исключая строку 0 означает, что это может справиться с @term = 1)