2014-03-31 498 views
0

我使用SQL Server 2008SQL Server 2008的Case語句

我要尋找一個在T-SQL

SELECT CASE @H_CNT 
WHEN 2 THEN 
@H_VAR_1 = @H_VALUE_1 
WHEN 3 THEN 
@H_VAR_2 = @H_VALUE_2 
END 

但上述說法是不能接受的,並顯示像這樣的閒置聲明錯誤。

什麼是這裏

+1

'CASE'在T-SQL是一個** **表達 - 它可以返回一個值(文字或SQL變量),但它**不能**執行代碼塊 –

+0

@ user3481294請編輯帖子以包含錯誤消息。這將爲這個問題提供背景,並讓其他人集中他們的答案。 –

回答

1
SELECT @H_VAR_1 = CASE WHEN @H_CNT = 2 THEN @H_VALUE_1 ELSE @H_VAR_1 END, 
     @H_VAR_2 = CASE WHEN @H_CNT = 3 THEN @H_VALUE_2 ELSE @H_VAR_2 END 
+0

你確定這不適合你嗎?爲什麼? –

+0

,它的工作thanks.but你的答案將不適合我在我的情況基本上我有一個if語句,每個記錄執行一次。 我有5000萬條記錄,所以這些如果得到執行的ecery記錄,所以可能如果我使用它會使代碼更快 – user3481294

+0

您可能只需要添加一個where條件。但很難說沒有任何表格,示例數據或預期輸出。 –

0

問題的問題是,你不能在CASE語句中指定。您可以從結果一個CASE聲明分配:

SELECT @H_VAR_1 = CASE @H_CNT WHEN 2 THEN @H_VALUE_1 ELSE @H_VAR_1 END, 
     @H_VAR_2 = CASE @H_CNT WHEN 3 THEN @H_VALUE_2 ELSE @H_VAR_2 END 
+0

很好,那是我想知道Roryap – user3481294