2017-03-08 37 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

報告應該有更好的表現,如果你把這個表達式作爲該組,而不是一個行可見表達一個過濾器,但在那一刻我無法確認這個表情是否確認將被允許​​在那裏。