sql - 查询对前“n”条记录求和
问题描述
我想仅对前“n”个日期记录的预测数量列求和。例如,对于每个项目编号,最早(或第一个)三个日期记录
当前查询:
SELECT gen.Item ,
gen.DemandDate ,
gen.ForecastQty
FROM reports.v_special_demand_800 gen
ORDER BY gen.Item, gen.DemandDate ASC
桌子
期望的结果
解决方案
为每条记录分配一个行号,按项目分区(这将为每个项目启动一个新的行计数器)并按 DemandDate 排序。然后对行号<= N的记录求和,按Item分组:
WITH CTE AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY Item ORDER BY DemandDate) as RowNum
FROM reports.v_special_demand_800
)
SELECT Item, SUM(ForecastQty)
FROM CTE
WHERE RowNum <= 3
GROUP BY Item
推荐阅读
- python-3.x - pandas dataframe 用两个值的平均值填充 nan
- javascript - 如何按日期和另一个参数排序
- azure - 在 azure key-vault 中对机密进行分组
- spring - 引起:org.apache.http.conn.HttpHostConnectException:连接到 localhost:7577 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] 失败:
- flutter - 如何从颤振中的变量中检索值?
- python - 访问字典元素并与 String 和 print 连接
- python - 根据学期将人员从列表分配到组
- android - 如何解决“gradle failed resolve”?
- javascript - 为什么我的按钮与我的输入字段重叠?
- upload - 使用minio java sdk上传或下载文件时如何恢复断点