• Now, assuming you have a tally table already or built one from the script I provided in the previous post, below is the sql to build a sample test table from which to query, along with the sql to parse a multivalue parameter in order to return the desired records from the test table.

    Code to populate a test table:

    /****************************************************/

    /* BUILD A SAMPLE DATASET OF SICCODES*/

    /****************************************************/

    IF OBJECT_ID('TEMPDB..#SICCODES') IS NOT NULL

    DROP TABLE #SICCODES

    CREATE TABLE #SICCODES

    (

    SICCODE VARCHAR(4)

    ,SICCODE_TEXT VARCHAR(50)

    )

    INSERT #SICCODES

    (

    SICCODE

    ,SICCODE_TEXT

    )

    SELECT '5810', '5810-RETAIL-EATING & DRINKING PLACES'

    UNION ALL

    SELECT '5812', '5812-RETAIL-EATING PLACES'

    UNION ALL

    SELECT '5812','5812-RESTAURANTS'

    UNION ALL

    SELECT '5812','5812-PLACES TO EAT'

    UNION ALL

    SELECT '5812','5812-DINERS, DRIVE-INS, AND DIVES'

    UNION ALL

    SELECT '5900', '5900-RETAIL-MISCELLANEOUS RETAIL'

    UNION ALL

    SELECT '5912', '5912-RETAIL-DRUG STORES AND PROPRIETARY STORES'

    UNION ALL

    SELECT '5940', '5940-RETAIL-MISCELLANEOUS SHOPPING GOODS STORES'

    UNION ALL

    SELECT '5944', '5944-RETAIL-JEWELRY STORES'

    UNION ALL

    SELECT '5945', '5945-RETAIL-HOBBY, TOY & GAME SHOPS'

    /* SELECT * FROM #SICCODES */

    Code to parse out a multivalue parameter to simulate "StartsWith...". Be sure to test out both joins in the SQL -- there's an "=" join and a "Like" join (only one should be active at a time):

    /************************************************************************************************/

    /* RETURN RESULTS BASED ON SIMULATING THE PASSING OF A MULTIVALUE DELIMITED STRING PARAMETER*/

    /************************************************************************************************/

    DECLARE @Parameter VARCHAR(2000)

    ,@Delimiter CHAR(1)

    SET @Delimiter = ','

    SET @Parameter = '5812,594' /* SIMULATE THE VARIOUS VALUES THAT MIGHT BE SUBMITTED IN A MULTIVALUE PARAMETER PASSED FROM SSRS */

    SET @Parameter = @Delimiter + @Parameter + @Delimiter /* BOOKEND THE PARAMETER ARRAY WITH A COMMA ON EACH END... NECESSARY IF ONLY ONE VALUE EXISTS IN THE @PARAMETER */

    SELECTC.SICCODE

    ,C.SICCODE_TEXT

    FROM#SICCODES C

    JOIN /* PARSE OUT THE MULTIVALUED DELIMITED PARAMETER INTO INDIVIDUAL ROWS OF DATA */

    (

    SELECT DISTINCT ParamValue = LTRIM(SUBSTRING(@Parameter,N+1,CHARINDEX(@Delimiter,@Parameter,N+1)-N-1))

    FROM dbo.Tally

    WHERE N < LEN(@Parameter)

    AND SUBSTRING(@Parameter,N,1) = @Delimiter --Notice how we find the comma

    ) Sub

    ON C.SICCODE = Sub.ParamValue -- THIS IDENTIFIES EXACT SICCODE MATCHES

    /* USE THE "LIKE" JOIN CLAUSE BELOW, INSTEAD, IF YOU NEED TO IDENTIFY DATA BY THE TEXT DESCRIPTIONS RATHER THAN BY EXPLICIT SICCODE */

    -- ON C.SICCODE_TEXT LIKE Sub.ParamValue + '%' /* THIS "LIKE" JOIN TRULY MIMICKS "STARTSWITH".... */