2013-10-29 49 views
0
CASE 
    WHEN authorizedID = dbo.CUSTOMER_TABLE.authorizedID 
    THEN authorizedID 
    ELSE NULL 
END AS authorizedID, 

我想匹配authorizedID與不同表格的列dbo.CUSTOMER_TABLE.authorizedID。如果authorizedID等於dbo.CUSTOMER_TABLE.authorizedID那麼我想要authorizedID else null使用CASE表達式存儲過程中的語法錯誤

但是我得到的語法錯誤dbo.CUSTOMER_TABLE.authorizedID

多部分標識符dbo.CUSTOMER_TABLE.authorizedID不能寫存儲過程 勢必

在哪裏我錯過?

任何幫助將不勝感激。

+3

coalesce有什麼問題?還有:顯示完整的sql語句! –

+0

首先,我會嘗試爲變量/列/別名使用不同的名稱,以確保這不是問題 – mucio

+0

這不是一個語法錯誤,它指出在查詢中沒有對象(在作用域內)調用'dbo.CUSTOMER_TABLE'。你的from子句中是這個表/視圖嗎?你給它一個別名? – GarethD

回答

1

在你的情況下,代碼必須是如下:

CASE 
    WHEN authorizedID in (select distinct authorizedID from dbo.CUSTOMER_TABLE) 
    THEN authorizedID 
    ELSE NULL 
END AS authorizedID 

否則,你可以離開這個表(dbo.CUSTOMER_TABLE),並在此之後加入,定義CASE條件。在這種情況下,性能會更好。