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 –