2014-03-31 65 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