2010-09-06 44 views
1

你好專家我有一個Sp,其中包含大量的if/else條件 請幫助我如何在T-SQL中使用Switch Case在哪裏子句。 這裏是我的查詢在T-SQL中的開關盒在哪裏條款

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 

請幫助我,任何指針或建議將是非常有幫助的感謝

回答

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 
+0

我們可以添加多個條件然後 (DST.Code ='LICVA'或DST.Code ='CLI' – 2010-09-06 08:35:56

+0

您可以在case關鍵字後替換一個有效的布爾表達式case(@Form ='page.aspx'或@Form ='page2.aspx')當0則... else ...結束 – 2010-09-06 13:08:21

+0

請參閱http://msdn.microsoft.com/en-us/library/ms181765.aspx文檔。 – 2010-09-06 13:11:37

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語句)。

+0

感謝它幫助,如果我需要添加比= 像DT.code <>「ZZ」以外的其他運營商和DT.code <>「zz2所示」在那麼條件? – 2010-09-06 08:34:25