SQL连接重复记录

克雷格RB89

我正在尝试加入两个表。您将在下面注意到的一些作业是重复的。这些是我遇到的唯一问题。当我加入并加总保费而不是得到100美元的预期结果时,我看到了200美元。关于如何使查询不乘以* 2的任何想法?谢谢!

Tbl A

ABC123     2015-02-27     1     QQ123
ABC123     2015-02-27     1     QQ123

Tbl B

ABC123, 100

SQL:

SELECT 
    RP.POLNUMBER, RP.EFFDATE, SUM (LP.PREMIUM)
FROM 
    TBL_A RP 
INNER JOIN 
    TBL_B LP ON RP.POLNUMBER = LP.POLNUMBER
WHERE 
    RP.MOSTRECENTMODEL = 1 AND RP.POLNUMBER = 'ABC123'
戈登·利诺夫(Gordon Linoff)

您已正确识别问题。解决方案是在以下日期之前预先汇总数据join

SELECT RP.POLNUMBER, RP.EFFDATE, LP.PREMIUM
FROM TBL_A RP INNER JOIN
     (SELECT LP.POLNUMBER, SUM(LP.PREMIUM) as PREMIUM
      FROM TBL_B
      GROUP BY LP.POLNUMBER
     ) LP
     ON RP.POLNUMBER = LP.POLNUMBER
 WHERE RP.MOSTRECENTMODEL = 1 AND RP.POLNUMBER = 'ABC123';

实际上,出于性能目的,相关的子查询可能应该更好地工作:

SELECT RP.POLNUMBER, RP.EFFDATE
       (SELECT SUM(LP.PREMIUM) as PREMIUM
        FROM TBL_B LP
        WHERE RP.POLNUMBER = LP.POLNUMBER
       ) as PREMIUM
FROM TBL_A RP 
WHERE RP.MOSTRECENTMODEL = 1 AND RP.POLNUMBER = 'ABC123';

您的过滤条件看起来具有很高的选择性。没有理由汇总整个表以仅返回一些策略的结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章