2
我对于使用SQL还是比较新的,所以任何事情都会有所帮助。我的目标是添加一个参数,以允许用户根据单个列筛选结果。我正在SSRS中工作,并且我的表格布局方式是有一个表格,其中有一列包含用户为其他表格中的列创建标签的列。我正在动态搜索我需要的列名,然后使用它将我需要的信息从第二个表中取出。但是,当我想添加一个参数来过滤结果时,会遇到麻烦。在变量中使用参数时遇到问题SQL
DECLARE @Root varchar(max);
DECLARE @Command varchar(max);
SET @Root=(SELECT ColumnName FROM FirstTable WHERE USER_LABEL = 'Results')
SET @Command = 'SELECT
CASE
WHEN
'[email protected]+' IS NULL THEN ''Null''
ELSE
'[email protected]+'
END AS "Result"
,COUNT(*) AS "Number"
,CAST(ROUND(COUNT(*)*100.0/(SELECT COUNT(*) FROM SecondTable),1) AS DECIMAL(4,1)) AS "Percentage"
FROM SecondTable
从我所了解的情况来看,SSRS在创建参数时可以帮助您,下面这行看起来像是创建参数时唯一需要做的事情。
WHERE Filter = @filt
但是,我得到一个错误,指出我“必须声明标量变量'@filt'”。有没有解决这个问题的方法?它看起来像我希望将@filt声明为它所在字符串变量中的一个变量。
GROUP BY '[email protected]+''
EXEC(@Command)
我试图这样做,但它没有得到任何结果。通常在SSRS中,当查询在查询设计器中运行时,会弹出一个窗口来自动创建参数。但是,没有弹出窗口。我必须手动创建参数吗? –
您应该创建一个存储过程并从SSRS调用它。这应该使参数显示在SSRS中,以便您可以为其分配一个值。 –
我还发现此链接讨论主题:https://social.msdn.microsoft.com/Forums/sqlserver/en-US/f7b85430-66f3-4932-a69c-3e41ddee4f3a/how-to-pass-report-parameters -to-stored-procedure-in-report-builder-30?forum = sqlreportingservices –