Multi Select 选择显示全部时参数不显示记录,因为其中一个类别没有记录

Multi Select Parameter not diplaying records when display all is selected because one of the categories has no records

我有一个名为类别的报告参数,它是一个多 select 参数,具有(select 全部)类别 1、类别 2、类别 3。

@Category NVARCHAR(10)    
Select ...
from dbo.item i

INNER JOIN dbo.ItemCategory AS ic ON i.Category = ic.Code

AND i.Category = @Category

有些项目属于类别 1,但其他两个项目还没有属于这些类别,以后会有。

当我 select select 全部在类别参数中而不是只显示类别 1 记录时,它什么也不显示,唯一显示内容的方法是如果我 select 单独的类别 1 复选框。我如何修复它以便在 select 全部 selected 时显示类别 1 中的类别项目?

已修复,参数将类别 1、类别 2、类别 3 作为一个字符串返回,因此我需要拆分字符串,以便传递各个类别而不是作为一个巨大的字符串。

  AND i.Category IN (SELECT * FROM dbo.SplitString(@Category, ','))

SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO
CREATE  FUNCTION [dbo].[SplitString]
(
@List nvarchar(4000),
@token nvarchar(5)
)  
RETURNS @RtnValue table 
(
--Id int identity(1,1),
Value nvarchar(100)
)  
AS  
BEGIN

SET @List = RTRIM(LTRIM(@List))
IF @List <> '' 
BEGIN
    WHILE (CHARINDEX(@token, @List)>0)
    BEGIN 

        INSERT INTO @RtnValue (value)
        SELECT Value = LTRIM(RTRIM(SUBSTRING(@List,1,CHARINDEX          (@token,@List)-1))) 

        SET @List = SUBSTRING(@List,CHARINDEX(@token,@List)+LEN(@token),LEN(@List))

    END 

    INSERT INTO @RtnValue (Value)
    SELECT Value = LTRIM(RTRIM(@List))
END

RETURN
END
GO