为隐藏的 ssrs 设置表达式
Set expression for hidden ssrs
我只想显示前 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
我会在您的 select 查询中输入一个行号,然后在 tablix 过滤器中输入一个表达式,类似于 where row <= 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,
您可以使用 RunningValue()
来计算到目前为止您的报告中显示了多少行。像这样的查询应该在您的组(或详细信息)可见性表达式中起作用:
=RunningValue(Fields!Supplier.Value, Count, "DataSet1") > 10
Neil Norris 的回答应该同样有效,假设您能够编辑数据集 SQL。
我只想显示前 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
我会在您的 select 查询中输入一个行号,然后在 tablix 过滤器中输入一个表达式,类似于 where row <= 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,
您可以使用 RunningValue()
来计算到目前为止您的报告中显示了多少行。像这样的查询应该在您的组(或详细信息)可见性表达式中起作用:
=RunningValue(Fields!Supplier.Value, Count, "DataSet1") > 10
Neil Norris 的回答应该同样有效,假设您能够编辑数据集 SQL。