2015-06-19 70 views
-1

我有一個像如何簡單的查詢轉換的條件爲動態查詢

IF OBJECT_ID('tempdb..#t') IS NOT NULL 
DROP TABLE #t 
GO 
IF OBJECT_ID('tempdb..#tt') IS NOT NULL 
DROP TABLE #tt 
GO 
CREATE TABLE #t(ID INT,Name varchar(10)) 
insert into #t (ID,name)values (1,'mohan'),(2,'mohan') 

CREATE TABLE #tt(ID INT,Name varchar(10)) 
insert into #tt (ID,name)values (1,'Raju'),(2,'ram') 

表和我創建,我需要在我的原程序調用基於狀態

CREATE PROCEDURE usp_Getresult 
(
@statusval char(2) 
) 
AS 
BEGIN 
IF @statusval = '01' 
BEGIN 
Select * from #t 
END 
IF @statusval = '02' 
BEGIN 
Select * from #tt 
END 
IF @statusval = '00' 
BEGIN 
Select P.ID,P.Name from (
Select * from #t 
UNION ALL 
Select * from #tt)P 
END 
END 
EXEC usp_Getresult '00'=> '01' or '02' 

的程序它有更多的條件,我只是不想寫入,如果條件我想這個轉換轉換成動態查詢,即使我知道轉換成動態,但如果我有多個條件,那麼我需要如何繼續

回答

4

如果2表的模式是相同的,我只想去進行正常的查詢具有重大intelliSence

CREATE PROCEDURE usp_Getresult 
(
    @statusval char(2) 
) 
AS 
BEGIN 

    Select * from #t WHERE @statusval IN ('00', '01') 
    UNION ALL 
    Select * from #tt WHERE @statusval IN ('00', '02') 

END 
+0

我在找不到性能方面只想消除,如果條件@eric – mohan111

+0

@ mohan111不知道你是什麼意思通過消除'if',樣本中沒有一個'if' – Eric

+1

此查詢確實消除了所有這些if語句。 – N0Alias