我有一个来自报告的多值参数,它会相应地隐藏或显示列。数据集调用相应的存储过程:
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完成?
编写多个查询是不可行的,因为在多值参数中有太多选项可供选择。
答案 0 :(得分:0)
我会创建两个额外的参数并将它们添加到查询和SSRS中以过滤数据集:
@Cluster NVARCHAR(100)
,@ServerIP NVARCHAR(100)
您可以使用动态SQL在SELECT中添加/删除列;但是,如果您的列消失或出现,SSRS报告将无法正常工作。
更新: 一步一步如何在SSRS中设置条件列可见性: http://bhushan.extreme-advice.com/conditionally-setting-column-visibility-in-ssrs/