Я новичок в хранимых процедурах и все еще изучаю, ниже я также старался и работает. Но у меня есть только одно изменение на ad.Indicator
, и я пишу один и тот же запрос трижды в IF, ELSE IF
.Альтернативы IF ELSE в хранимой процедуре SQL Server
Не может ли это быть сделано лучше? (Я использую SQL Server)
ALTER PROCEDURE TestingSP
@startdate Datetime,
@enddate Datetime,
@source Varchar(10)
AS
BEGIN
IF(@source = 'None')
SELECT *
FROM FD.T fd
INNER JOIN AD.T ad ON fd.OCD = ad.ACD
WHERE fd.SG BETWEEN @startdate AND @enddate
ELSE IF(@source = 'Air')
SELECT *
FROM FD.T fd
INNER JOIN AD.T ad ON fd.OCD = ad.ACD
WHERE fd.SG BETWEEN @startdate AND @enddate AND ad.Indicator = 'True'
ELSE IF(@source = 'Not Air')
SELECT *
FROM FD.T fd
INNER JOIN AD.T ad ON fd.OCD = ad.ACD
WHERE fd.SG BETWEEN @startdate AND @enddate AND ad.Indicator = 'False'
END
+1 У них есть временная часть. Не могли бы вы предложить, что можно сделать, чтобы справиться с этим? – Vbp
Я считаю, что это пропустит условие «Нет». Возможно, CASE WHEN @source = 'Not Air' THEN 'False' WHEN 'None' THEN ad.Indicator ELSE 'True' END – dazedandconfused
Вы правы: я пропустил это (или был отредактирован?). Я обновлю. Спасибо –