我對 SSRS 比較陌生,但多年來一直在使用 SQL。我的任務是創建一個報告,根據其狀態反映已發貨的物品。例如,我有 x 個狀態不同的專案,包括“IN_TRANSIT”、“RECEIVING”、“SHIPPED”、“WORKING”和“CLOSED”。請求者詢問我是否可以在報告下拉串列中提供以下選項:
“IN_PROCESS”狀態過濾器包括除“CLOSED”之外的所有狀態。“關閉”。
本質上,他們希望能夠查看所有非關閉狀態、已關閉、狀態或全部。現在,我已經設定好了,所以你可以單獨選擇所有狀態,基本上是讓他們獲得他們想要的資料,而不是使用“正確”的引數。
我的問題是,SSRS 是否提供了一種基本上將非關閉狀態“分組”到報告中的方法,以便當他們選擇“IN_PROCESS”時,它將這些非關閉狀態發送到我內置的 SQL 查詢?為此使用 SQL 的問題是我創建的用于生成下拉選項的資料集提供“CLOSED”和“IN_PROCESS”作為輸出選項,但是當他們選擇“IN_PROCESS”(將該值發送到報告中的過濾器)時,因為它不是實際狀態,所以什么都沒有回來。
如果需要更多資訊或說明,請告訴我。
提前致謝!
uj5u.com熱心網友回復:
您可以在 SQL 查詢中創建一個新列并使用 CASE 陳述句為適用狀態提供 IN_PROCESS 或 CLOSED 的值。然后您只需要過濾條件將 SSRS 引數與新列匹配。
uj5u.com熱心網友回復:
根據這種情況可能被重用的頻率,應該有助于確定如何處理它。如果聽起來它可能會成為一個常規程序......“哦,我們可以有另一個具有相同過濾器但顯示xyz 的報告嗎?”然后花時間正確設定,這將在將來節省時間。
如果可能的話,我個人會添加一個資料庫表,其中包含狀態名稱和狀態組名稱(為了簡單起見,這里忽略完全規范化)。
CREATE TABLE StatusGroups(Status varchar(10), StatusGroup varchar(10))
INSERT INTO StatusGroups VALUES
('IN_TRANSIT', 'In Process'),('RECEIVING, 'In Process'),('SHIPPED', 'In Process'),('WORKING', 'In Process'),('CLOSED' 'Closed')
然后一個簡單的視圖
CREATE MyNewView AS
SELECT t.*, g.StatusGroup
FROM MyTable t
JOIN StatusGroups g on t.STATUS = g.Status
現在更改您的報告資料集查詢以使用此視圖傳遞報告引數,如下所示...
SELECT *
FROM MyNewView
WHERE StatusGroup = @myReportParameter
您的報告引數的可用值串列的資料集可能類似于
SELECT DISTINCT StatusGroup FROM StatusGroups
這樣,如果您每次都添加更多狀態或狀態組值,您可以向該表添加一個條目,一切都將正常作業,而無需編輯您的報告。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/332835.html
