2015-02-21 3 views
0

Как я могу написать предложение WHERE с использованием IF - END IF. Я использую хранимую процедуру. У меня есть 3 параметра. Если все параметры имеют значение, тогда это нормально, и у меня нет проблем. Но если один параметр пуст, я хочу использовать WHERE CLAUSE без этого параметра, который пуст. Смотрите мой пример:Sql Server if - end if with select

@Godina int, 
@Korisnik int, 
@Nalog int 

select 
    ROW_NUMBER() OVER (PARTITION BY [PROMTRAN] ORDER BY [PROMDATU]) AS [R], 
    P.PROMGODI, 
    P.PROMKORI, 
    P.PROMBROJ, 
    P.PROMTRAN, 
    P.PROMDATU, 
    o.OPIS AS OPIS, 
    P.PROMUPLA, 
    P.PROMISPLA 


    from tPROM P 
    left outer join tNALO N 
    on p.PROMGODI = N.NALOGODI and p.PROMKORI = n.NALOKORI and p.PROMBROJ =   n.NALOBROJ 
    left outer join tOpis O 
    on p.PROMOPIS = O.PROMOPIS 
) 
     Select [PROMKORI], [PROMBROJ],R AS [RB],[PROMTRAN],[PROMDATU], [OPIS], [PROMUPLA],[PROMISPLA] 
    From OrderCTE 
    Where Godina = '14' and Kori = '1' and Nalog = @Nalog 

--******************************** 
IF @Nalog NULL OR '' THEN 
Where Godina = '14' and Kori = '1' 
    ELSE 

Where Godina = '14' and Kori = '1' and Nalog = @Nalog 
END IF 
--******************************* 

ответ

0

Вы можете использовать динамический SQL, однако это можно сделать так:

WHERE Godina = '14' 
    AND Kori = '1' 
    AND (Nalog = @Nalog OR NULLIF(@Nalog, '') IS NULL) 
1

Делают это с OR:

WHERE Godina = '14' AND Kori = '1' AND (Nalog = @Nalog OR @Nalog IS NULL)