Skip to content

Filter a dataset with a multiple value parameter

Anthony edited this page Jan 15, 2025 · 1 revision

Problem: Passing a multiple value parameter to a report source

Solution 1: You can pass the parameter as a comma separated string and then split it in the where clause.

CREATE PROC [dbo].[example_procedure]
(
   @CheckDateFrom DATE         = NULL
   , @CheckDateTo   DATE         = NULL
   , @BankCode      VARCHAR(MAX) = NULL
)
AS
   BEGIN
	  SELECT 
		 [c].[BANK_CODE]
		 , [c].[CHECK_DATE]
		 , [c].[CHECK_NUM]
	  FROM [dbo].[APT_CHECK] AS [c]
	  WHERE
	  1 = 1
	  AND [c].[CHECK_DATE] BETWEEN @CheckDateFrom AND @CheckDateTo
	  AND [c].[BANK_CODE] IN
		 (
		 SELECT 
			    value
		 FROM STRING_SPLIT(@BankCode, ',')
		 WHERE RTRIM(value) != ''
		 );
   END;

Solution 2: You can do a Boolean filter in the dataset.

=IIF(InStr(("'" + Join(Parameters!BankCode.Value, "', '") + "'"), ("'" + Trim(Fields!BANK_CODE.Value) + "'") ) > 0, True, False)