设置隐藏ssrs的表达式

时间:2017-03-08 10:21:16

标签: reporting-services ssrs-2008 ssrs-2008-r2 ssrs-2012 ssrs-tablix

我想只显示前10行并隐藏列中的剩余行。

Tablix属性中的表达式(Set expression for:Hidden)将是什么 - >能见度 - >根据表达式显示或隐藏。

我的数据集名称是Top50CustomerSQL; 我的专栏名称是供应商;

这个场景的表达式好吗?

SQL Code

   SELECT  s.[CusNo] Supplier, 
RTRIM(CAST(s.[Customer] AS VARCHAR(50)) ) AS Name,
s.[ConcessionNo] Concession, 
RTRIM(CAST(s.[ConcessionName] AS VARCHAR(50)) ) AS ConcessionName,

sum(case when s.Date between convert(date,dateadd(wk, datediff(wk, 0, getdate()) - 1, 0) - 1) and convert(date,dateadd(wk, datediff(wk, 0, getdate()) - 1, 0) + 5) 
           then s.SELLINC else 0 end) ActualSales,

    sum(case when s.Date 
        BETWEEN         
             convert(varchar(10), DATEADD(day, DATEDIFF(day, '19000107', DATEADD(month, DATEDIFF(MONTH, 0, CONVERT(date, CONVERT(VARCHAR(4), (CASE WHEN MONTH(GetDate()) = 1 THEN CONVERT(VARCHAR(4), GetDate(), 112) - 1 ELSE CONVERT(VARCHAR(4), GetDate(), 112) END), 112) + '0101')), 30)) / 7  * 7, '19000107'), 120)
        AND        
             Convert(date, dateadd(wk, datediff(wk, 0, GETDATE()) - 1, 0) + 5)       
           then s.SELLINC else 0 end) YrToDateActual


FROM [dbo].[CustomerReports] s
WHERE s.BRN = 1 or s.BRN = 2 or s.BRN = 3 or s.BRN = 4 or s.BRN = 5  or s.SELLINC is null or s.SELLINC = '0'
GROUP BY s.[CusNo], s.[Customer], s.ConcessionNo, s.ConcessionName
order by YrToDateActual desc

2 个答案:

答案 0 :(得分:2)

我会在你的select查询中输入一个行号,然后在tablix过滤器中放一个表达式,例如where< = 10

在你的SQL中:

 ROW_NUMBER ( ) OVER ( [ PARTITION BY value_expression , ... [ n ] order_by_clause )  

在tablix过滤器表达式中:

=SUM(IIF(Fields!rn.Value <= 10, 1, 0), "DataSet")

在您的数据集中,将其放在任何位置:

SELECT s.[CusNo] Supplier,
   row_number () over(ORDER BY(SELECT 0)) AS rn,

答案 1 :(得分:2)

您可以使用RunningValue()来计算报告中到目前为止已显示的行数。像这样的查询应该适用于您的组(或详细信息)可见性表达式:

=RunningValue(Fields!Supplier.Value, Count, "DataSet1") > 10

假设您能够编辑数据集SQL,Neil Norris的答案应该同样有效。