SQL 相关子查询中的数学运算

SQL Math Operation In Correlated Subquery

我正在处理三个表,基本上,一个是物料清单,一个包含零件库存,最后一个包含工作订单或工作。我试图找出是否有可能有一个相关的子查询可以使用来自外部查询的值执行数学运算。这是我正在尝试做的一个例子:

SELECT A.work_order,A.assembly,A.job_quantity,
    (SELECT COUNT(X.part_number)
    FROM bom X
    WHERE X.assembly = A.assembly
    AND (X.quantity_required * A.job_quantity) >= (SELECT Y.quantity_available FROM inventory Y WHERE 
Y.part_number = X.part_number)) AS negatives
FROM work_orders A
ORDER BY A.assembly ASC

我试图找出对于给定的工作订单,是否有我们没有足够的零件来构建组件。我目前收到 "Error correlating fields" 错误。是否可以在单个查询中执行此类操作?

尝试将子查询移动到连接中,如下所示:

   SELECT a.work_order, a.assembly, a.job_quantity, n.negatives
   FROM work_orders a JOIN (SELECT x.part_number, COUNT(x.part_number) as negatives
                     FROM bom x JOIN work_orders b
                     ON x.assembly = b.assembly
                     WHERE (x.quantity_required * b.job_quantity) >= (SELECT y.quantity_available 
                                                                       FROM inventory y WHERE 
                                                                       y.part_number = x.part_number)
                    GROUP BY x.part_number) n
                    ON a.part_number = n.part_number
                    ORDER BY a.assembly ASC

或者用子查询创建一个临时游标,然后用它加入主查询table。 希望这有帮助。

路易斯