根据选择列的参数过滤行?

时间:2019-10-10 22:13:48

标签: sql-server reporting-services ssrs-2012

我正在Visual Studio中构建报表,并且希望有一个参数,该参数可以让我从预定列表中选择部门。每个部门在表中分配了许多列。选择部门后,将仅显示与他们的组相关的列。我通过在每个列中添加一个列可见性表达式来进行设置。

但是,对于某些列,某些组有空行。例如,第10行可能包含“会计”内容,但没有“合规性”内容。如果我选择“合规性”作为部门参数,我想隐藏此行。当我使用@Department作为输入变量运行查询时,这在SQL Server中似乎可以正常工作。但是,当我将此逻辑转移到Visual Studio时,它不喜欢它。如果我选择“合规性”参数,则除了相关的列标题外,表中什么都没有显示。

有没有更好的方法来解决这个问题?我要做的是为每个部门创建= 1或0的列。因此,我有一列名为“ Compliance”,“ Legal”等的列,如果该组有相关内容,则将为每行分配“ 1”(是)或“ 0”(否)。

列名是(示例):

mt.[Customer Name]
mt.[Address]
mt.[Order #]
mt.[CC Info]
mt.[Confirmation #]
mt.[Misc# Notification]
mt.[Confidentiality]
br.Legal
br.Accounting
br.IR
br.Operations
br.Compliance

参数类型设置为TEXT

DECLARE @Department VARCHAR(255)

SELECT * 
FROM   maintable mt
       LEFT OUTER JOIN @BooleanRows br 
                    ON (mt.ID = br.ID2) 
WHERE '1' = (CASE WHEN @Department = 'Legal'
            THEN br.Legal
            WHEN @Department = 'Compliance'
            THEN br.Compliance 
            WHEN @Department = 'Accounting'
            THEN br.Accounting 
            WHEN @Department = 'Operations'
            THEN br.Operations 
            WHEN @Department = 'IR'
            THEN br.IR 
        END)

正如我所说,如果我设置@Department ='Legal'或'Compliance'等,查询将在SQL Server中工作,但在Visual Studio报表生成器中似乎不起作用。另外,“参数”下拉列表的大写/拼写方式与查询中的方式完全相同。

下面是当您在Parameter = Department 1上进行过滤时在SSRS Report视图中结果的示例图像: View filtered on Parameter = "Department 1"

您看到有2种列类型-白色BG是根据“参数”过滤的列。浅蓝色BG是静态的列。在白色BG列中,出现3行。只有2行包含数据。我想隐藏/过滤出不包含那些白色列数据的行。

1 个答案:

答案 0 :(得分:0)

戴尔·伯瑞尔(Dale Burrell)是正确的,不清楚问题出在哪里。我要说的是(根据我对您问题的理解),最好使用行可见性,就像使用列可见性来隐藏信息一样。

相关问题