简单的存储过程,执行一条count语句,就是根据参数来选择不同的where条件:create procedure U_QuestionListCount
(
@id int 
)
as
select count([QuestionId]) from [U_Question] where (
case @id 
when 0 then [IsOver]=0 
when 1 then [IsOver]=1 
when 2 then [IsOver]=1 and [IsGood]=1 
else [IsOver]=0 
end
)
GO错误提示:when...case语法错误,望给予帮助,不甚感激!

解决方案 »

  1.   

    where条件后面后像不能跟case语句,另外写条吧
      

  2.   

    我这样拼接sql语句可以实现,如下,但如何在一条select语句中完成?请高手解答,多谢了。
    create procedure U_QuestionListCount
    (
    @id int 
    )
    as
    declare @whereStr varchar(100)
    select @whereStr = 
    case @id 
    when 0 then '[IsOver]=0' 
    when 1 then '[IsOver]=1' 
    when 2 then '[IsOver]=1 and [IsGood]=1' 
    else '[IsOver]=0' 
    end
    execute('select count([QuestionId]) from [U_Question] where '+@whereStr)
    GO
      

  3.   

    WHERE 好像不能接 CASE 语句的
    LZ你那样是 SELECT 语句中使用CASE啊当然可以啦
      

  4.   

    create procedure U_QuestionListCount
    (
    @id int 
    )
    as
    select count([QuestionId]) from [U_Question] where (
    case @id 
    when 0 then 0 
    when 1 then 1 
    when 2 then 1 
    else 0 
    end as [IsOver] and [IsGood]=1 
    )
    GO