考虑到所有先前的总和,尝试逐行求和,并得到如下所示的输出。
谁能告诉我我错过了什么?
SELECT
ProductId,
ProductName,
ProductAmount As ProductActualAmount,
CASE
WHEN (CASE
WHEN LEAD(ProductAmount) OVER (ORDER BY ProductId) IS NULL THEN 0
ELSE LEAD(ProductAmount) OVER (ORDER BY ProductId)
END) != 0.00 THEN (ProductAmount + CASE
WHEN LAG(ProductAmount) OVER (ORDER BY ProductId) IS NULL THEN 0
ELSE LAG(ProductAmount) OVER (ORDER BY ProductId)
END)
ELSE (CASE
WHEN LEAD(ProductAmount) OVER (ORDER BY ProductId) IS NULL THEN 0
ELSE LEAD(ProductAmount) OVER (ORDER BY ProductId)
END)
END AS SumAmount
FROM ProductSales
输出:
预期输出:
ProductId ProductName ProductActualAmount SumAmount
---------------------------------------------------------
1 Rexona 35.00 35.00
2 Liril 40.00 75.00
3 Dove 45.00 120.00
4 Pears 50.00 170.00