У меня есть проблемы в отношении некоторой «слишком много коды производится» или не самый элегантное кодирование способа вопроса:Лучшего способ создания динамических условий в SQL функций
ALTER FUNCTION [dbo].fn_Function
(@Location NVARCHAR(30) ='ALL')
RETURNS @ReportTable TABLE(DateOfProviValidity date,
DateOfFixumValidity date,
UserID NVARCHAR(50)
)
AS
BEGIN
DECLARE @CurrentMonth DATE
SET @CurrentMonth = dbo.fn_getFirstOfMonth(getdate())
IF @Location IS NOT NULL AND @Location <> 'ALL'
INSERT INTO @ReportTable
SELECT *
FROM dbo.fn_getFinalPData(@CurrentMonth)
WHERE 1 AND Location = @Location
ELSE
INSERT INTO @ReportTable
SELECT *
FROM dbo.fn_getFinalPData(@CurrentMonth)
WHERE 1 AND Location IS NOT NULL
RETURN
END
Есть ли возможность избавиться от первоначального IF @Location
и добавить его ближе к пункту Where
?
Моя проблема заключается в том, что оператор case не работает, так как я не могу выполнить действие «Место равно» или «НЕ НУЛЛ».