2017-03-08 85 views
0

我正在使用SSRS 2014.SSRS - 行可见性表达式

我想仅显示前50行。这将是什么表达这个请。

我用top n功能它不起作用。所以我想通过另一条路线来通过表达来达到结果。

下面的图片没有加入'top n'。在下面的图像我想在供应商列与添加“前n”只显示前50行

enter image description here

下面的图像。然后结果被改变。特许经营栏中的几行遗漏。

enter image description here

SQL代码,

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 

任何帮助吗?

+0

http://stackoverflow.com/questions/18085716/ssrs-display-top-n-but-have-sum-include-all-values – Snowlockk

+0

您的数据是否有重复值? –

+0

@ jacky-montevirgen不,我没有任何重复的值 – user2331670

回答

-1

修改您的ORDER BY子句:
ORDER BY S [CusNo],YrToDateActual递减

0

如果你想第一个50级的供应商,你应该能够使用该行visibility属性下面的表达式:

= RunningValue(领域!Supplier.Value,CountDistinct,“YourDataset”)> 50

报告应该有更好的表现,如果你把这个表达式作为该组,而不是一个行可见表达一个过滤器,但在那一刻我无法确认这个表情是否确认将被允许​​在那里。