我有一个报告,主要组和列添加到组中,以显示主数据的每个组一行,而不显示详细数据的分组。
根据详细数据计算组总数错误。
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。
如何按“请求金额”文本框而不是“请求金额”数据字段对组总数求和。
答案 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
分组中的将给出正确的值