在更新时使用棘手的SQL

在更新时使用棘手的SQL,sql,Sql,我有以下更新SQL: UPDATE o SET HolidayPay = lob.AllowHolidayPay , AppreciationPay = lob.AllowAppreciationPay FROM Orders AS o INNER JOIN LineofBusiness AS lob ON o.LineofBusinessID = lob.LineofBusinessID WHERE o.StatusID != 156 --

我有以下更新SQL:

UPDATE  o
SET     HolidayPay = lob.AllowHolidayPay ,
        AppreciationPay = lob.AllowAppreciationPay
FROM    Orders AS o
        INNER JOIN LineofBusiness AS lob ON o.LineofBusinessID = lob.LineofBusinessID
WHERE   o.StatusID != 156 -- ALL ORDERS THAT ARE NOT CLOSED
        AND o.TempOrDirect = 'T'
GO
我需要让WHERE子句做的不仅仅是使用statusID。如果statusID=156,则需要检查stageID的值。因此,如果statusID=156,但是stageID=6,就可以了。如果statusID仍然是156,但stageID是任何其他值,则!=第二部分是观察

提前谢谢

使用

(o.StatusID != 156 OR (o.StageID=6 and o.StatusID=156))

所以stageID=6或StatusID!=156

WHERE (o.StatusID != 156 
        OR stageID = 6)
    AND o.TempOrDirect = 'T'

你们漏掉了“AND o.TempOrDirect='T'”,这是我的问题,但看看我的问题,我觉得我还不够清楚。这不会更新statusID=156的位置,但现在只会更新stageid=6和statusID=156的位置。我需要它只与statusID 156有关,如果阶段id为6。表中的所有其他行也需要更新。实际上,我把它复杂化了。与其尝试使用一个奇怪的排除组合,但只有当X和/或Y为真时,我才使用正态。