sql联接表导致重复

9rbhqvlz  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(251)

所以表a是一个 policy_id 信息,而表b是 policy_id 附有索赔。不是a中的所有id都存在于b中,但是我想连接两个表并求和(total claims)。
问题是这个总和远远高于表本身的实际总和。
以下是我迄今为止尝试过的:

select a.policy_id, coalesce(sum(b.claim_amt), 0)
from database.table1 as a
left join database2.table2 as b on a.policy_id = b.policy_id
where product_code = 'CI'
group by a.policy_id

b中不存在的id显示得很好,旁边有一个0,它确实存在,索赔金额似乎在总和中大量重复。

kzmpq1sx

kzmpq1sx1#

我怀疑你 policy_idtable1 不是唯一的,这会导致两倍,三倍,等金额,你可以聚合的总和 table2 用cte来解决这个问题。

WITH CTE AS (
SELECT
  policy_id
  coalesce(sum(claim_amt), 0) as sum_amt
FROM database2.table2 
group by policy_id
)
select a.policy_id, b.sum_amt
from database.table1 as a
left join CTE as b on a.policy_id = b.policy_id
where product_code = 'CI'

相关问题