2017-08-01 4 views
2

を選択した場合、私は、次のストアドプロシージャています:CASEまたはその後、SQL

ALTER Procedure _MySP (@oDate date) 
AS 
BEGIN 
    SELECT * 
    FROM _table1 
    WHERE oDate >= @oDate 
END 

私のようなもので変性したクエリにしたいが:

IF @oDate <= '2017-06-01' 
THEN 
    SELECT * 
    FROM _table2 
ELSE 
    SELECT * 
    FROM _table1 
END 

どのように私はこれを達成することができますか?ご意見をお聞かせください。

ありがとうございます。

答えて

3

これを試しましたか?

alter Procedure _MySP (@oDate date) 
as 
begin 
    If @oDate <= '2017-06-01' 
     SELECT * FROM _table2 
    else 
     SELECT * FROM _table1 
end; 
0
alter Procedure _MySP (@oDate date) 
as 
begin 
    select * from _table1 where @oDate => '2017-06-01' 
    select * from _table2 where @oDate <= '2017-06-01' 
end 

トリックを行う必要があります。あなたが平等な事件を考えていないことを願っています。

0
IF @oDate <= '2017-06-01' 
BEGIN 
    SELECT * FROM _table1 
    --where-- 
END 
ELSE 
BEGIN 
    SELECT * FROM _table2 
    --where-- 
END 
0

これを試してください。

ALTER PROCEDURE _MySP (@oDate date) 
BEGIN 
IF (@oDate < = '2017-06-01') 

BEGIN 

    SELECT * FROM _table2 

END 

ELSE 

BEGIN 

    SELECT * FROM _table1 

END 


END