基于总量在SSRS 2012

问题描述:

enter image description here基于总量在SSRS 2012

如何显示前10名,我需要根据Total(SUM(Premium))栏只显示前10 Class。 我去组的ClassCode属性 - >筛选和SUM(NetWrittenPremium)设置前10,但它不工作。

我需要只显示前10个,并且还总量应为只有那些10.

广东话了解如何实现它。

enter image description here

enter image description here

这里是我的查询:

;WITH cte_TopClasses 
AS ( 
SELECT 

     c.YearNum, 
     c.MonthNum, 
     DD.ClassCode, 
     ISNULL(SUM(prm.Premium),0) as NetWrittenPremium 

FROM tblCalendar c 
LEFT JOIN ProductionReportMetrics prm ON c.YearNum = YEAR(prm.EffectiveDate) and c.MonthNum = MONTH(prm.EffectiveDate) 
      AND CompanyGUID = '18E04C99-D796-4CFA-B1E7-28328321C8AD'  
LEFT JOIN [dbo].[Dynamic_Data_GLUnitedSpecialty] DD on prm.QuoteGUID = DD.QuoteGuid 
WHERE (c.YearNum = YEAR(GETDATE())-1 and c.MonthNum >= MONTH(GETDATE())+1) OR 
     (c.YearNum = YEAR(GETDATE()) and c.MonthNum <= MONTH(GETDATE())) 
GROUP BY c.YearNum, 
      c.MonthNum, 
      DD.ClassCode--,prm.Premium 

    ) 
SELECT ROW_NUMBER() OVER (PARTITION BY ClassCode ORDER BY NetWrittenPremium DESC),* 
FROM cte_TopClasses 

,并从查询结果我:

enter image description here

@Alan ŧ汉克斯。 查询输出的样子说:

enter image description here

如果我在order bydense_rank添加ClassCode那么$ 142,000不是要去是查询。哪个不好。

还有其他想法吗?也许我可以使用partition函数?

在组属性添加排序,并设置

Sort by expression "=Sum(NetWrittenPremium)" 
Order = "Z to A" 

他们在过滤器如下:

Expression = "=Sum(NetWrittenPremium)" 
Operator = Top N 
Value = 10 

其实我刚刚注意到总计行....这将不能正确计算总数,并且您不能在Tablix的过滤器中使用聚合(否则可能会有效)。

最好的办法是推回到服务器,并在那里做到这一点。

,我不能对你的数据测试这种直接,但它应该工作,我对类似成才测试...

SELECT r.* FROM 
    (SELECT d.* 
      , dense_rank() OVER(ORDER BY TotalNWP Desc) AS rnk 
     FROM 
      (SELECT DISTINCT 
       ClassCode, YearNum, MonthNum 
       , SUM(t.NetWrittenPremium) OVER (PARTITION BY ClassCode, YearNum, MonthNum) AS NetWrittenPremium 
       , SUM(t.NetWrittenPremium) OVER (PARTITION BY ClassCode) AS TotalNWP 
      FROM cte_TopClasses t 
      ) d 
    ) r 
    WHERE rnk <=10 

现在应该没有必要做任何SSRS过滤,只是排序rnk列。

你唯一存在的问题是如何确定哪个最后的结果(它们全部具有相同的总数)优于其他结果。你可以做一些事情,比如将ClassCode添加到dense_rank函数中,以便按字母顺序选择它们;但是对于你来说,我可以决定。

+0

Alan谢谢。但那就是我一直在做的事情。它仍然生成11行,共11行。 – Oleg

+0

你有2个具有相同价值的汇总?无论如何。我注意到Totals无法在组内过滤,因此我正在更新答案(5 - 10分钟) –