Итак, насколько я понял ваш вопрос, вы хотите использовать суммы MovementWithinDay
для каждого &ItemNo
.Я полагаю, что для этого можно использовать рекурсивный CTE с рейтингом , если только вы не используете SQL Server 2000 или более раннюю версию.
Вот так может выглядеть запрос:
WITH ranked AS (
SELECT
*,
rank = ROW_NUMBER() OVER (PARTITION BY [&ItemNo] ORDER BY MovementWithinDay)
FROM
),
cumulated AS (
SELECT
[&ItemNo],
[&LocationId],
[&MovementDate],
MovementWithinDay,
Stock = MovementWithinDay,
rank
FROM ranked
WHERE rank = 1
UNION ALL
SELECT
r.[&ItemNo],
r.[&LocationId],
r.[&MovementDate],
r.MovementWithinDay,
Stock = c.Stock + r.MovementWithinDay,
r.rank
FROM ranked r
INNER JOIN cumulated c ON r.[&ItemNo] = c.[&ItemNo] AND r.rank = c.rank + 1
)
SELECT
[&ItemNo],
[&LocationId],
[&MovementDate],
MovementWithinDay,
Stock = MovementWithinDay
FROM cumulated