sql-server - 获取之前连续 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。
解决方案
你认为以下是你需要的吗?
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;
推荐阅读
- c++ - VS2015 / 2017 中的 TRACE 宏无法编译 - 我需要包含什么?
- android - 为什么带有 URI 方案 tel: 和 sms: in href 的 HTML 文件中的链接在 Android 上不起作用?
- javascript - 为什么我不能将属性直接分配到我的数据中?
- reactjs - 递增/递减点击组件。如何将数据保存到 db.json?
- python - SessionNotCreatedException:消息:无法创建新服务:使用 Selenium 3.14.0 和 Python 3.7.3 的 ChromeDriverService
- python - 为什么在 logging.info 中显示名称错误?
- javascript - 传递给 MVC 控制器的 JSON 对象中的某些元素为 NULL
- javascript - 将 HTML 转换为 base64 未正确编码某些字符
- sql - 我的脚本在 3 行以上没有效果
- mysql - Laravel 使用带有外键的 avg() 函数