【问题标题】:SQL Method for Cascading Workload Based on Rank and Available Hours基于等级和可用小时级联工作量的SQL方法
【发布时间】:2020-08-13 18:39:23
【问题描述】:

最近我通过 Excel 创建了一个自动化生产调度工具,它为在同一流程中生产的项目分配一个等级,然后使用该等级与工作量相结合来创建一个计划。

它完全按照预期的方式运行,但由于数据量大而且它是 excel,它的性能非常慢,这就是我希望将计算转移到 SQL 的原因。

一般逻辑是这样的: - 总是在第二天之前的第一天生产所有东西 - 总是先生产较早等级的物品,然后再生产较晚等级的物品

您可以在下图中看到这是如何进行的,该行今天有 21.5 小时,因此项目将在第 1 天生产,直到等于 21.5,然后将剩余部分结转到第 2 天,依此类推。

我能够在 Excel 中使用冗长的基于位置的公式来做到这一点,但我正在尝试想办法在 SQL 中获得相同的结果,而不必依赖于查看上面的行。

我不知道如何表达类似“从可用时间中减去同一天生产的优先级更高的项目的生产时间”之类的内容。

如果问题不清楚,我深表歉意,但我们将不胜感激。

Image of Production Hours Cascading by Priority and Day

Example of Position-Based Fomula

【问题讨论】:

  • sum() over (order by ... between rows preceding and current row)??
  • 您使用的是哪种 DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加tagWhy should I tag my DBMS
  • 抱歉,我使用的是 Microsoft SSMS
  • SSMS 只是一个客户端。但它很可能表明 SQL Server 是实际的 DBMS。
  • 是的,我们使用的是 Microsoft SQL Server。

标签: sql sql-server ssms


【解决方案1】:

感谢 shawnt00,这让我找到了正确的方向。最终,我不得不稍微修改 case 语句以取消累积总数,但我能够使用 sum() Over (partition by order by ) 语句获得所需的结果。

【讨论】:

    猜你喜欢
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 2013-06-06
    相关资源
    最近更新 更多