SQL - 比较 2 个计数值以更新完成字段

SQL - Compare 2 Count values to update a Completion field

示例场景:

我知道下面的代码不起作用,但这是我正在努力实现的示例:

UPDATE OrdersTable SET OrderComplete = 1  
FROM PartsTable 
WHERE
     OrdersTable.OrderID = (SELECT TOP 1 OrderID FROM OrdersTable ORDER BY changedate DESC) 
AND 
    COUNT(PartsTable.ItemReceived) = COUNT(PartsTable.EquipmentID)

所以当每个单独的部分都设置为已接收时 (ItemReceived),然后我希望 COUNT 函数将此列与 进行比较设备ID

示例 1

在这种情况下,4 不等于 5,所以什么也不会发生

示例 2

在这种情况下 5 等于 5 所以 OrderComplete 应该等于 TRUE

感谢您对此问题的帮助

您可以使用 NOT EXISTS 而不是 COUNT

这将 UPDATE 所有 Orders 在没有等待接收的部分时完成。如果仍有一个或多个零件等待接收,则订单将不会更新完成。

NOT EXISTS 中的连接可能不正确,因为我不确定 OrdersTable 如何链接到 PartsTable,但它应该让您朝着正确的方向前进。

UPDATE
    OrdersTable

SET
    OrderComplete = 'TRUE'

FROM
    OrdersTable

WHERE
    NOT EXISTS
    (
        SELECT  *
        FROM    PartsTable
        WHERE   ItemReceived = 'FALSE'
                AND OrdersTable.Id = PartsTable.Id
    )