2013-04-28 25 views
0

我有这样的UPDATE SQL:整蛊SQL如果UPDATE

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是任何其他值,则观察!=部分。

在此先感谢!

+0

实际上,我已经超越了这一点。而不是试图使用排除这种奇怪的组合,但只有当X和/或Y为真时,我才会使用正态。 – user2328138 2013-04-28 02:31:01

回答

1

使用

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

你错过了“AND o.TempOrDirect ='T'”WHERE部分 – Zeddy 2013-04-28 02:12:44

+0

我有这个,但看着我的问题,我认为我不够清楚。这不会更新statusID = 156的位置,但它现在只会更新stageid = 6和statusID = 156的位置。 只有在阶段ID为6时,我才需要它仅关注statusID 156。表中的所有其他行还需要更新。 – user2328138 2013-04-28 02:25:26

1

于是级ID = 6或StatusID!= 156?

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