SSRS中的总和不显示正确的数字

时间:2016-08-25 20:30:14

标签: sql tsql reporting-services sum

原因可能在于我的查询,因为我使用MAX来获取唯一记录。 但是现在我的SSRS报告没有显示正确的NetWrittenPremium金额。 这个问题的解决方法是什么? enter image description here 这是我的疑问:

select  b.YearNum,
        b.MonthNum,
        ClassCode,
        QLL.Description,
        SUM( Premium) as NetWrittenPremium
FROM        tblCalendar b  
LEFT JOIN   ProductionReportMetrics prm ON b.MonthNum=Month(prm.EffectiveDate) AND b.YearNum = YEAR(EffectiveDate)  
AND prm.EffectiveDate >=DateAdd(yy, -1, DATEADD(d, 1, EOMONTH(GETDATE()))) AND prm.EffectiveDate <= EOMONTH(GETDATE())  AND CompanyLine = 'Ironshore Insurance Company' 
LEFT JOIN  NetRate_Quote_Insur_Quote Q ON prm.NetRate_QuoteID = Q.QuoteID
LEFT JOIN NetRate_Quote_Insur_Quote_Locat QL ON Q.QuoteID = QL.QuoteID  

LEFT JOIN   (SELECT * FROM NetRate_Quote_Insur_Quote_Locat_Liabi nqI 
            JOIN ( SELECT LocationID as LocID, MAX(ClassCode) as ClCode 
            FROM NetRate_Quote_Insur_Quote_Locat_Liabi  GROUP BY LocationID ) nqA 
            ON nqA.LocID = nqI.LocationID AND nqA.ClCode = nqI.ClassCode ) QLL 
            ON QLL.LocationID = QL.LocationID 

WHERE ( b.YearNum = YEAR(GETDATE())-1 and b.MonthNum >= MONTH(GETDATE())+1 ) OR 
                    ( b.YearNum = YEAR(GETDATE()) and b.MonthNum <= MONTH(GETDATE()) ) 
GROUP BY b.YearNum,b.MonthNum,ClassCode,        QLL.Description

我的tablix结构:我对Description和ClassCode感兴趣。按SUM(NetWrittenPremium) DESC排序并按SUM(NetWrittenPremium) TOP 10过滤。另一组是MonthNum。 enter image description here

enter image description here

我添加了一个分组表达式为1的新组 但仍然是相同的错误总数 enter image description here

2 个答案:

答案 0 :(得分:0)

这里的问题是群组过滤器不适用于聚合功能。所以 你的SUM()正在挑选一切。来自总计,聚合和内置集合的表达式范围的MSDN文档(https://msdn.microsoft.com/en-us/library/dd255256.aspx):

  

计算数据聚合时不使用组过滤器   区域。

如果可能,最好将Top 10语句移到查询中。

如果这不是一个选项,你应该可以使用你的&#34; Rank&#34;表达而不是。创建&#34;总计&#34;细节级别的行,使用RunningValue计算运行的美元值。然后将可见性标准设置为:

=RunningValue(Fields!ClassCode.Value,CountDistinct,Nothing) <> 10  

编辑:显然有一个MSDN线程涵盖了这种情况。 https://social.msdn.microsoft.com/Forums/sqlserver/en-US/0b21bab0-ff02-4655-a69c-efedfb2a7077

答案 1 :(得分:0)

我认为你的问题是你的小组正在过滤前10名,但总行不是。

添加新群组添加群组 - &gt;与您的总线相邻。将它分组为1(因此它将它们组合在一起)。然后使用与其他单元格相同的表达式(如果尚未添加SUM,则添加它)。将相同的 TOP 10过滤器添加到新组中。

enter image description here