2009-10-01 111 views
1

我是SQL Reporting Services 2008的新成員,無法找到如何做一些應該很簡單的事情。Sql Reporting Services參數問題

我所擁有的是一個單一的選擇參數,填充了查詢中的推銷員列表。這很好。我有數據集查詢響應此參數運行良好。所以我的單個推銷員的報告工作正常。

我的問題是,我也想有一個選項,是所有銷售人員,這樣經理可以打印出一個完整的列表。

關於如何做到這一點的任何建議。

回答

2

我通常UNION ALL自定義值到我的查詢頂部與一個特殊的值,這將指示我以後的查詢,它不應該過濾。

我通常對此使用NULL,0或'%'。

喜歡的東西:

SELECT 0 [UserId], '(All Users)' [Username] 
UNION ALL 
SELECT 
    [UserId], 
    [Username] 
FROM 
    dbo.[Users] 

,然後在以後的查詢:

SELECT * FROM Data WHERE (UserID = @UserID OR @UserID = 0) 
+0

謝謝,它的工作。在報告服務中使用最難的事情是,對於很多事情來說,沒有選擇去做你想做的事情,而是像這樣,你可以「欺騙」系統做你想做的事情。這並不是說這真的很難,對我而言,這是一種非常不同的思考方式。 – 2009-10-01 19:16:07

1

你的銷售人員詢問大概是這樣的:

SELECT SalesPersonName FROM SalesPerson ORDER BY SalesPersonName ASC 

您應將其更改爲這個:

SELECT 1 as SortOrder, SalesPersonName FROM SalesPerson 
UNION SELECT 0 as SortOrder, 'All' ORDER BY SortOrder, SalesPersonName 

現在您的查詢將返回:

 
All 
Adam 
Barry 
Steve 
... 

現在,當你拉你的數據的報告,你可以這樣做:

WHERE(SalesPersonName = @SalesPersonName OR @ SalesPersonName = '所有')

如果這是您的經理想要的,請確保將默認設置爲「全部」。