sql - 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 似乎在总和中被大量重复。
解决方案
我怀疑你的policy_id
intable1
不是唯一的,这会导致翻倍、三倍等。金额 您可以汇总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'
推荐阅读
- android - 找不到 com.android.support:appcompat-v7:23.4.0
- excel - VBA 使用单元格引用隐藏列和行
- apache-kafka - Kafka 连接基于大小的翻转和基于时间的单个分区翻转
- minecraft - Minecraft 执行命令根本不起作用
- javascript - 如何通过地图投影调整将 GeoTIFF 图像导入 d3-geo 地图?
- css - 为什么多个媒体查询不起作用?
- javascript - 有没有办法使用 javascript 仅验证表单中启用的字段?
- powershell - 从 powershell 管理设备
- php - 在PHP中连接数组中的字符串忽略空格
- postgresql - 下班后 Postgres CPU 使用率高