Я пытаюсь выяснить эту хранимую процедуру.SQL Server Если Null Return Everything
ALTER procedure [dbo].[GetTotals]
@Service nvarchar(50),
@Country nvarchar(50) = NULL,
@Region nvarchar(50) = NULL
as
SELECT
CASE @Service
WHEN 'Army' THEN Sum(Army)
WHEN 'Navy' THEN Sum(Navy)
When 'Marine_Corps' then Sum(Marine_Corps)
When 'Air_Force' then Sum(Air_Force)
ELSE NULL
END as "ServiceTotal"
FROM
All_Records
WHERE Country = CASE WHEN @Country IS NOT NULL THEN @Country ELSE Country END
AND Region = CASE WHEN @Region IS NOT NULL THEN @Region ELSE Region END
То, что я хочу, если @Country
не равно нулю, то возвращать записи where Country = @Country
, остальное возвращает все страны. Я хочу такое же поведение для Region
.
Я попытался Else Is Not Null, а остальное! = Null, а остальное <> Null
Но ничего не работает.
Редактировать:
Я понял. Я просто неправильно вызывал процедуру. Это работает. Я должен назвать процедуру, названную GetTotals следующим образом:
- GetTotals Navy, Null, Europe Это вернет полный флот для всей Европы.
- GetTotals Navy, Албания, Null Это вернет суммы для военно-морского флота в Албании
Также в SQL Server 'ISNULL()' является альтернативой;). –