首页 > 解决方案 > SQL 连接表导致重复

问题描述

所以表 A 是一个完整的policy_id信息表,而表 b 是policy_id附有声明的。并非 A 中的所有 id 都存在于 B 中,但我想加入这两个表并求和(总索赔)。

问题是总和远高于表本身的实际总和。

这是我迄今为止尝试过的:

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,它是确实存在的那些,其中 claim_amt 似乎在总和中被大量重复。

标签: sqljoinduplicates

解决方案


我怀疑你的policy_idintable1不是唯一的,这会导致翻倍、三倍等。金额 您可以汇总table2CTE 中的总和来解决此问题。

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'

推荐阅读