我已經構建了一個SSRS報告,該報告應該查看具有相似名稱的幾個表中的數據 - 即table001,table010,table011等。在構建報告時,我只有三張桌子,其中有十幾桌。一切工作正常,直到我將所有其餘的表添加到查詢,使用多個SELECT語句UNIONed在一起;它試圖對這麼多的數據進行分類,以至於花了差不多半小時的時間來呈現報告。這是行不通的。將SSRS參數傳遞給SQL查詢
有沒有辦法將SSRS參數傳遞給SQL查詢,指定要訪問的表?
我已經構建了一個SSRS報告,該報告應該查看具有相似名稱的幾個表中的數據 - 即table001,table010,table011等。在構建報告時,我只有三張桌子,其中有十幾桌。一切工作正常,直到我將所有其餘的表添加到查詢,使用多個SELECT語句UNIONed在一起;它試圖對這麼多的數據進行分類,以至於花了差不多半小時的時間來呈現報告。這是行不通的。將SSRS參數傳遞給SQL查詢
有沒有辦法將SSRS參數傳遞給SQL查詢,指定要訪問的表?
根據您的意見,你可以做到以下幾點
DECLARE @Parameter NVARCHAR(15) = 'Foo'
SELECT CASE
WHEN @Parameter IN ('Foo', 'Bar')
THEN (
SELECT *
FROM table001
)
WHEN @Parameter IN ('Foobar')
THEN (
SELECT *
FROM table002
)
ELSE
(
SELECT *
FROM table003
)
END
或者
SELECT CASE @Parameter
WHEN 'Foo'
THEN (
SELECT *
FROM table001
)
WHEN 'Bar'
THEN (
SELECT *
FROM table002
)
WHEN 'Foobar'
THEN (
SELECT *
FROM table003
)
ELSE
(
SELECT *
FROM @table004
)
END
在第一個示例中,我看不到報表參數的值如何轉到查詢。它看起來像你只是聲明一個SQL變量,並立即分配一個值。 –
另外,我嘗試了第二個例子。它給了我三個錯誤 - '必須聲明標量變量@Param','關鍵字ELSE'附近的語法錯誤,'關鍵字SET'附近的語法錯誤' –
好吧,這是出於演示目的。也許我不明白這個問題 - 你的問題的完整性是如何在SSRS中傳遞參數?我猜這*是*標題所說的。在這種情況下,http://msdn.microsoft.com/en-us/library/aa337432(v=sql.105).aspx是關於這個主題的深入文章。 – Tom
你有沒有跟着MSDN教程?這也不錯:http://sql-bi-dev.blogspot.com/2010/07/report-parameters-in-ssrs-2008.html
請分享你已經嘗試過,以及你有什麼困難。實質上,您可以在報告中定義一個參數並將其包含在查詢中。 SSRS提供參數值(或通過用戶輸入接收),然後將最終查詢傳遞給數據庫。
如果查詢速度慢,報告將會很慢。問題不在於將參數從SSRS傳遞到數據庫,而是您的查詢。你需要找出如何解決你的問題聯合在一起12表,並且你的報告問題將解決自己 – Tom
@Tom - 這就是爲什麼我想弄清楚如何使用變量的表名。如果我能做到這一點,我可以只查詢一個表而不是所有的表 - 只要將報表參數傳遞給變量,它就會基於這個查詢進行查詢。我只是不知道該怎麼做。 –
對不起,我現在看到,我先不理解這個問題。那麼,基於某些參數,您將從某個表中選擇?例如,@Param ='Something'然後從table008中選擇?您可以在查詢中的「if/else」或「case」語句中進行定義。 – Tom