首页 > 解决方案 > 获取之前连续 10 行的销售以获取总和

问题描述

我有一张桌子 t1

**id**        **Date**             **Sales**
102         20180101                    50
102         20180102                    60
102         20180103                    70
102         20180104                    90
102         20180105                    10
102         20180105                   100
102         20180106                   100
102         20180107                    30
102         20180108                    20
102         20180109                    34
102         20180110                    40
102         20180111                    50
102         20180112                    60

现在我希望每行的前 10 条记录,例如 20180111 的销售总和应该是 464,这是前 10 条销售记录的总和,对于 20180112,它应该是 474。

标签: sql-server

解决方案


你认为以下是你需要的吗?

WITH temp
AS (SELECT id,
           date,
           SUM(sales) AS n_Sale
    FROM dbo.t
    GROUP BY id,
             date)
SELECT *,
       SUM(t.n_Sale) OVER (ORDER BY date ASC ROWS 9 PRECEDING)
FROM temp AS t;

推荐阅读