У меня следующая процедура:Там, где условие основано на значении параметра
CREATE PROCEDURE LoadSoldItens
@DateStart DATETIME,
@DateEnd DATETIME,
@SectionId INT = NULL
AS
BEGIN
SELECT SectionId, Name INTO #Sections
FROM LoadSections(@SectionId)
SELECT S.Id AS SoldId,
S.Quantity AS SoldQuantity,
FROM SoldItens S WITH(NOLOCK)
LEFT JOIN #Sections SC ON S.SectionId = SC.SectionId
WHERE (ISNULL(S.SoldDate, @DateStart) BETWEEN @DateStart AND @DateEnd)
-- AND --Here i'm stuck ....
END
@SectionId параметра является необязательным и, если пользователь посылает значение NULL или -10 для параметра @SectionId, то мне нужно, чтобы получить все данные, имеют значение S.SectionId null или любое значение.
Если пользователь отправляет @SectionId> 0, тогда мне нужно получить данные, имеющие S.Section = @SectionId.
Моя последняя попытка была:
AND (ISNULL(@SectionId, S.SectionId) IS NULL
OR ISNULL(@SectionId, S.SectionId) IS NOT NULL)
-- How to check @SectionId = -10 or @SectionId > 0
Любой желающий мог дать мне руку, пожалуйста?
Благодарим заранее.
Если я это сделаю, я верну только строки, которые S.SectionId не являются нулевыми, а если @SectionId равно null, мне нужно получить строки с любыми значениями в S.SectionId (включая нулевые значения) – placplacboom
@placplacboom - это это то, что он делает, если @ SectionId равно null, он соответствует всем. – Hogan
И -10 происходит от «exec LoadSoldItens »01/01/2013 ', '12/31/2014', -10 ' – placplacboom