我的邏輯只是必須是一個有點古怪,因爲當我測試,以確保這些CASE
陳述是真實的,我不會得到預期的結果...使用SQL Server嵌套CASE語句2008
例如,如果Sample1 = 'FI'
,Sample2 = 'GOVT'
和Sample3 = 'GOVT'
,我沒有得到'OKFI'
...我知道我必須是具有某處着一些古怪的邏輯......
對這些事情的最佳實踐的任何想法?
CREATE FUNCTION SampleFunction
(
@Sample1 varchar(50),
@Sample2 varchar(50) = null,
@Sample3 varchar(50) = null
)
RETURNS VARCHAR(255)
AS
BEGIN
declare @output varchar(255)
SET @output =
CASE WHEN @Sample1 = 'CASH' THEN 'CASH'
WHEN @Sample1 = 'ST' THEN
CASE WHEN @Sample2 ='TBILL' THEN
CASE WHEN @Sample3 = 'TBILL' THEN 'OKFI'
WHEN @Sample1 = 'FI' THEN
CASE WHEN @Sample2 = 'GOVT' THEN
CASE WHEN @Sample3 = 'GOVT' THEN 'OKFI'
WHEN @Sample1 = 'DERV' THEN
CASE WHEN @Sample2 = 'CURRCONT' THEN
CASE WHEN @Sample3 = 'FORWARD' THEN 'CASH'
WHEN @Sample3 = 'SPOT' THEN 'CASH'
WHEN @Sample2 = 'SWAP' THEN
CASE WHEN @Sample3 = 'CURRSWAP' THEN 'CASH'
WHEN @Sample3 = 'INDXSWAP' THEN 'OTHER'
WHEN @Sample2 = 'FUTURE' THEN
CASE WHEN @Sample3 = 'COMFUT' THEN 'COM'
WHEN @Sample3 = 'BFUT' THEN 'OKFI'
WHEN @Sample3 = 'NDXFUT' THEN 'OKSHARES'
WHEN @Sample3 = 'EQFUT' THEN 'OKSHARES'
WHEN @Sample3 = 'CURRFUT' THEN 'CASH'
WHEN @Sample2 = 'OPTION' THEN
CASE WHEN @Sample3 = 'CUROPTION' THEN 'CASH' END
ELSE 'OTHER'
END END END
END END END
END END END RETURN @Output
END -- FUNCTION
'消息102,級別15,狀態1,過程SampleFunction 49行 附近有語法錯誤END'.' –
這麼多的兩端.... – ObieMD5
哎呀。讓我編輯過程以顯示適量的END。對不起,關於 – user2587725