2009-10-01 98 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 = '所有')

如果这是您的经理想要的,请确保将默认设置为“全部”。