切换案例在T-SQL中的子句

时间:2010-09-06 07:39:48

标签: tsql

你好专家我有一个Sp,它包含很多if / else条件 请帮助我如何在T-SQL中使用Switch Case。 这是我的查询

if (@Form ='page.aspx')
begin
select 
    DT.Column,DST.Column1,
    DST.Code  from Table DT
join Table2 DST 
    on DT.ID= DST.ID
where 
    DT.code = 'XX1'
    and DT.CDID = @cdid
end

 if (@Form ='Page2.aspx')
begin
select 
    DT.Column,DST.Column1,
    DST.Code  from Table DT
join Table2 DST 
    on DT.ID= DST.ID
where 
    DT.code = 'XX2'
    and DT.CDID = @cdid
end

请帮助我,任何指针或建议都非常有用,谢谢

2 个答案:

答案 0 :(得分:1)

declare @dtCode varchar(255)
select @dtCode = 
   CASE @Form 
      WHEN 'page.aspx' then 'XX1' 
      WHEN 'page2.aspx' then 'XX2' 
      ELSE 'NoIdea'
   END

select
    DT.Column,DST.Column1,
    DST.Code  from Table DT
join Table2 DST 
    on DT.ID= DST.ID
where 
    DT.code = @dtCode
    and DT.CDID = @cdid

注意:我是在记事本的帮助下写的。没有使用查询分析器来检查任何语法错误。但是,我希望你能得到这个想法(当唯一改变的是dtCode的值时,不要重复SQL语句。)

答案 1 :(得分:1)

对于此特定查询,您可以编写

select

        DT.Column,DST.Column1,
        DST.Code  from Table DT

  join Table2 DST 

        on DT.ID= DST.ID
  where 

              DT.code = case @Form when 'page.aspx' then 'XX1' else 'XX2' end
 and DT.CDID = @cdid