Tsql 基于多值参数的查询变更

Tsql 基于多值参数的查询变更,tsql,reporting-services,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 + '%

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

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。其他值也是如此

这可能吗?这是在查询级别还是通过SSR完成的


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

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

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

更新: 如何在SSRS中逐步设置条件列可见性: