SQL 服务器查询与库存分析的分组和计数相关

SQL Server query related to grouping and counting for inventory analysis

我的 table 关注库存项目、库存水平和所需数量。举例如下:

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 服务器实现此目的?

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

首先添加一列每件可以建造多少件

 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
SELECT part, MIN([Pieces In Stock]/[Pieces Required]) AS PossibleCompleteDolls
FROM tblName 
WHERE [Pieces Required] <> 0
GROUP BY part;

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