【问题标题】:Set expression for hidden ssrs设置隐藏 ssrs 的表达式
【发布时间】:2017-03-08 10:21:16
【问题描述】:

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

Tablix 属性 -> 可见性 -> 根据表达式显示或隐藏此(设置表达式:隐藏)的表达式是什么。

我的数据集名称是 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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢皮特,我知道会有更简单的方法!
    • @pete-rennard-cumming 我如何在单独的行中获得总和
    • 当您右键单击表格单元格并转到Insert Row 时,有几个选项。如果您想为每个单独的供应商提供总和,请使用 Inside Group,如果您想要所有供应商的总和,请使用 Outside Group
    【解决方案2】:

    我会在您的选择查询中输入一个行号,然后在 tablix 过滤器中输入一个表达式,说明类似于 where row

    在您的 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,
    

    【讨论】:

    • 在我的问题中,我添加了 SQL 代码。请问我需要在哪里添加row_number?
    • 修改了我的答案——你可以把它放在任何地方。不要忘记在 tablix 过滤器表达式中将“数据集”更改为您在 SSRS 中调用的任何内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多