首页 > 解决方案 > 如何根据一列的累计和进行查询?

问题描述

所以假设我有下表:

在此处输入图像描述

现在假设查询是:

SELECT
    JobNo,
    WorkCenter,
    EstimMinutes
FROM Schedule
WHERE WorkCenter = 'Grinding'

现在假设 Grinding 的每日产能是每天 500 分钟,所以如果我要给他们一份当天的日程安排,我只想显示超过 500 分钟标记的作业。因此,在这种情况下,我只想返回以绿色突出显示的行,总共估计为 505 分钟。我该怎么做呢?

我试着做:

WHERE SUM(EstimMinutes) < 500

但这显然行不通。不太确定是否可以这样做,如果可以,我应该朝哪个方向前进。非常感谢任何帮助

标签: sql-servertsql

解决方案


我会建议你一个基于公用表表达式的解决方案:

WITH CTE AS (
SELECT
    JobNo,
    WorkCenter,
    EstimMinutes,
    SUM(EstimMinutes) OVER (PARTITION BY WorkCenter 
                            ORDER BY JobNo) AS CumulatedMinutes
FROM Schedule
WHERE WorkCenter = 'Grinding')
SELECT * 
FROM CTE
WHERE CumulatedMinutes < 500;

推荐阅读