根据多值参数

时间:2015-12-02 04:08:01

标签: tsql reporting-services

我有一个来自报告的多值参数,它会相应地隐藏或显示列。数据集调用相应的存储过程:

CREATE PROCEDURE RandomProc @Server NVARCHAR(100)
AS

SELECT
    t1.Cluster,
    t2.Server,
    t2.ServerIP
FROM
    Table1 t1
INNER JOIN Table2 t2
ON t1.ID = t2.ID
WHERE 
    t1.Cluster LIKE '%' + @Server + '%' OR
    t2.Server LIKE '%' + @Server + '%' OR 
    t2.ServerIP LIKE '%' + @Server + '%'

如果我要从报告中取消关闭Cluster,除了从报告中隐藏Cluster列之外,还应该从SELECT和WHERE子句中删除t1.cluster。等等其他价值观。

这可能吗?这应该在查询级别还是通过SSRS完成?

编写多个查询是不可行的,因为在多值参数中有太多选项可供选择。

1 个答案:

答案 0 :(得分:0)

我会创建两个额外的参数并将它们添加到查询和SSRS中以过滤数据集:

@Cluster NVARCHAR(100)
,@ServerIP NVARCHAR(100)

您可以使用动态SQL在SELECT中添加/删除列;但是,如果您的列消失或出现,SSRS报告将无法正常工作。

更新: 一步一步如何在SSRS中设置条件列可见性: http://bhushan.extreme-advice.com/conditionally-setting-column-visibility-in-ssrs/