【问题标题】:SQL Server query related to grouping and counting for inventory analysis与用于库存分析的分组和计数相关的 SQL Server 查询
【发布时间】:2015-09-28 14:51:50
【问题描述】:

我的表格涉及库存项目、库存水平和所需数量。下面给出一个例子:

Part     Sub Part         Pieces Required        Pieces In Stock

Barbie    Legs                 2                      1000
Barbie    Arms                 2                      5000
Barbie    Head                 1                       20
Barbie    Torso                1                     40000
Dora      Legs                 2                      1000
Dora      Arms                 2                      5000
Dora      Head                 1                       0
Dora     Torso                 1                     40000

我希望我的最终结果看起来像:

Part         No: of dolls that can be built

Barbie           20
Dora              0

所以逻辑是我们需要每个部分的最少数量来制作一个完整的娃娃。如果所需零件之一没有库存,则无法制作娃娃。当我们需要 2 个特定零件而只需要 1 个其他零件时,复杂性就来了。 如何使用 SQL Server 实现这一目标?

提前感谢您的帮助和时间。

【问题讨论】:

  • select part, MIN(PiecesInStock) As PiecesInStock from tblName group by part
  • 我认为您需要将 stockCount 除以 requiredCount 以获得 buildableCount 并获得 MIN()

标签: sql sql-server inventory-management


【解决方案1】:
SELECT part, MIN([Pieces In Stock]/[Pieces Required]) AS PossibleCompleteDolls
FROM tblName 
WHERE [Pieces Required] <> 0
GROUP BY part;

这里的 WHERE 子句只是为了防止被零除。

【讨论】:

    【解决方案2】:

    首先添加一列,每块可以构建多少个

     SELECT *, CAST([Pieces In Stock]/[Pieces Required] as INTEGER) AS canmake
     FROM TABLE
    

    然后按部分分组并取最小值

     SELECT Part, min(canmake) as [No: of dolls that can be built]
     FROM (
       SELECT *, CAST([Pieces In Stock]/[Pieces Required] as INTEGER) AS canmake
       FROM TABLE
       WHERE [Pieces Required] != 0
     ) T
     GROUP BY Part
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 2019-02-18
      • 2021-11-21
      相关资源
      最近更新 更多