我正在尝试加入两个表。您将在下面注意到的一些作业是重复的。这些是我遇到的唯一问题。当我加入并加总保费而不是得到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'
您已正确识别问题。解决方案是在以下日期之前预先汇总数据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] 删除。
我来说两句