2016-03-31 130 views
0

SQL SERVER 2012 在我的case服務器與'='發生衝突。 爲什麼它不起作用? 這裏是我的代碼:Case語句不能正常工作

SELECT 
TM.CODE_3 as Account, 
TM.NAME_3, 
TM.CODE_5, 
case TM.Line 
when TM.CODE_5 = '9491'--and RS.SUB1Sel = ('05.11 Penalties and fines') 
    then 'R0820-5' 
else TABLE_MAIN_new.Line 
end 
FROM TABLE_Main_new as TM 
left join Danone_Main as DM 
on TM.CODE_3 = DM.CODE_3 
left join Rep_Struct_2012_N as RS 
on TM.CODE_3 = RS.CODE_3 

'='附近的語法不正確。

回答

0

試試這個

case 
    when TM.CODE_5 = '9491'--and RS.SUB1Sel = ('05.11 Penalties and fines') 
    then 'R0820-5' 
else TABLE_MAIN_new.Line 
End 
+1

非常感謝! 我沒有得到它爲什麼它不工作,當我寫入TM.Line後... – Andrey

0

這應該工作:

CASE TM.CODE_5 
    WHEN '9491'--and RS.SUB1Sel = ('05.11 Penalties and fines') 
    THEN 'R0820-5' 
ELSE TABLE_MAIN_new.Line 
END 

當您使用CASE表達式,WHEN子句應該只有一個值(真/假取決於你的CASE表達式)。如果沒有使用CASE表達式,那麼WHEN應該是一個布爾表達式。更多信息HERE

+0

當我取消註釋其他字符串,然後代碼是行不通的。 還有一個問題。 我可以寫這樣的: 'CASE TM.CODE_5 WHEN '9491', '9492' 和RS.SUB1Sel =('05 0.11處罰和罰金) 然後 'R0820-5' ELSE TABLE_MAIN_new.Line END' – Andrey