2013-04-28 24 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'