You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Microsoft SQL Server 2016(SP2)中按就绪日期汇总数量生成散点图数据

解决方案:SQL Server 2016 按时间戳计算零件累计可用数量

针对你在SQL Server 2016 (SP2)中需要统计产品随时间推移的可用零件数量(为散点图提供精准时间戳维度数据)的需求,我们可以通过分组聚合+窗口函数的方式实现你想要的结果:

完整SQL查询语句

SELECT
    part_id,
    SUM(period_total) OVER (PARTITION BY part_id ORDER BY ready_at) AS [running total],
    ready_at
FROM (
    -- 先按零件和时间戳分组,计算每个时间点的新增数量
    SELECT
        part_id,
        SUM(qty) AS period_total,
        ready_at
    FROM your_table_name -- 替换成你的实际表名
    GROUP BY part_id, ready_at
) AS grouped_data
ORDER BY ready_at;

代码说明

  1. 内层子查询:先将同一part_id和同一ready_at时间戳的记录合并,计算该时间点新增的零件总数量(period_total),把同时间点的多条记录合并成一条,避免重复统计。
  2. 外层窗口函数:使用SUM() OVER()窗口函数,按part_id分区,再按ready_at排序,对period_total进行累计求和,得到每个时间点的累计可用零件数(running total)。

针对特定零件的优化(适配你的存储过程需求)

如果需要针对单个零件统计,可以在子查询中加入WHERE条件,修改后的SQL适合封装进存储过程:

SELECT
    part_id,
    SUM(period_total) OVER (ORDER BY ready_at) AS [running total],
    ready_at
FROM (
    SELECT
        part_id,
        SUM(qty) AS period_total,
        ready_at
    FROM your_table_name
    WHERE part_id = @TargetPartId -- 用存储过程参数指定目标零件ID
    GROUP BY part_id, ready_at
) AS grouped_data
ORDER BY ready_at;

验证结果

用你提供的示例数据执行上述查询后,会得到完全符合预期的结果:

part_idrunning totalready_at
1816191832019-12-20 16:27:58.280
1816321852019-12-21 08:07:25.733

很高兴听到Richard Hansell的解决方案已经生效,并且你已经封装成存储过程来满足特定零件的查询需求!

内容的提问来源于stack exchange,提问作者Mason Younger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:08:04