SSRS报告组总不匹配

时间:2015-08-30 14:38:28

标签: sql-server

我有一个报告,主要组和列添加到组中,以显示主数据的每个组一行,而不显示详细数据的分组。

根据详细数据计算组总数错误。

City    RequestID   Request Amount  ClaimID Claim Amount
El Monte    791     52,982.00       2157    41,143.75
El Monte    3691    11,838.00       3140    8,231.14
El Monte    3691    11,838.00       3141    990.00
El Monte    3691    11,838.00       3142    2,615.00

我有一个城市小组。

每个请求都可以有多个声明。但该请求每行仅显示一次。

如果有多个声明,那么请求的总数将乘以声明的数量。

请求金额的组总数应为64,820而不是88,496。

如何按“请求金额”文本框而不是“请求金额”数据字段对组总数求和。

1 个答案:

答案 0 :(得分:1)

假设您需要SQL查询,请尝试以下查询:

select 
  City, 
  SUM(RequestAmount) as RequestAmount 
from
(
  Select 
      DISTINCT City, requestID, RequestAmount 
  from tblDetails
) t
group by City

这是一个演示sql小提琴:http://sqlfiddle.com/#!6/2a10e/5

如果您需要链接回主数据集并需要一个数据集,那么我就建议在城市字段上建一个JOIN,如下所示:

select 
t1.* , t2.RequestAmount as GroupByCityRequestAmount
from 
tblDetails t1
left join 
 (
    select 
      City, 
      SUM(RequestAmount) as RequestAmount 
    from
    (
      Select 
          DISTINCT City, requestID, RequestAmount 
      from tblDetails
    ) t
    group by City
 ) t2
on t1.City=t2.City

请在此处查看演示小提琴:http://sqlfiddle.com/#!6/2a10e/6

或者,您也可以创建一个用于分组的单个集:

select 
   * , 
   case 
     when Row_Number() over (partition by City,requestID order by requestID) =1
     then 1 else 0 
    end * RequestAmount as GroupByCityRequestAmount
from 
   tblDetails   

这会产生如下输出

City        requestID   RequestAmount   ClaimID     ClaimAmount     GroupByCityRequestAmount
El Monte    791         52982           2157        41143.75        52982
El Monte    3691        11838           3140        8231.14         11838
El Monte    3691        11838           3141        990             0
El Monte    3691        11838           3142        2615            0
分组中的

将给出正确的值

演示小提琴链接:http://sqlfiddle.com/#!6/2a10e/14