У меня есть хранимая процедура с параметром @FilterToUse
.
У меня есть запрос внутри хранимой процедуры, как показано ниже:
INSERT INTO #StatusCalculation
SELECT COUNT(*)
FROM Data
WHERE DataType = 'Bid'
--This part can change based on SP param
AND CreatedDate BETWEEN CONVERT(DATETIME, ('1/1' + '/' + @RequestYear))
AND CONVERT(DATETIME, ('12/31' + '/' + @RequestYear))
--end dynamic part
AND Services LIKE '%Streamline Payroll%'
AND Services LIKE '%GlobalView Payroll%'
Так что, если у меня другой фильтр, мне нужно будет написать
INSERT INTO #StatusCalculation
SELECT COUNT(*)
FROM Data
WHERE DataType = 'Bid'
--This part can change based on param
AND BidId BETWEEN 1 AND 10
--end dynamic part
AND Services LIKE '%Streamline Payroll%'
AND Services LIKE '%GlobalView Payroll%'
Теперь моя проблема в том, что на основе параметра @FilterToUse
мне, возможно, придется использовать другое выражение запроса. Один и тот же запрос, основанный на разных параметрах, используется около 10 раз. Есть ли способ, которым я могу динамически добавлять условия фильтра в запрос на основе параметра, не дублируя весь запрос.
Я подумал, смогу ли я как-нибудь сделать следующее
declare @data nvarchar(max)
Set @data = 'and CreatedDate between convert(datetime,("1/1"+"/"+@RequestYear))
and convert(datetime,("12/31"+"/"+@RequestYear))'
, а затем просто добавьте эту переменную в запрос
Insert into #BidStatusCalculation
select 'SL Payroll',Count(*) from DashboardData
where DataType = 'Bid'
@data