原因可能在于我的查询,因为我使用MAX
来获取唯一记录。
但是现在我的SSRS报告没有显示正确的NetWrittenPremium
金额。
这个问题的解决方法是什么?
这是我的疑问:
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。
答案 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)