我有2个表,我需要查询并返回结果集的“例外”的基础上,如果table1中的字段的总和等于table2中的字段的总和(其中其他栏匹配)。SQL左加入加法列的加倍值
select A.TranName,A.TranDate,A.TranCode,SUM(A.TranQty) AS T1Qty,B.TranName,B.TranDate,B.TranCode,SUM(B.TranQty) AS T2Qty
from Table1 AS A
LEFT JOIN Table2 AS B
on A.TranName = B.TranName AND A.TranDate = B.TranDate AND A.TranCode = B.TranCode
GROUP BY A.TranName, A.TranDate, A.TranCode, B.TranName, B.TranDate, B.TranCode
HAVING SUM(A.TranQty) != SUM(B.TranQty)
结果集不正确,因为它将Table1.TranQty和和Table2返回的行数相乘。
例如,如果Table1有1个记录,其中表1中的2条记录的连接匹配,则表1中1条记录的TranQty将乘以2(因此匹配不正确)。
我敢肯定我缺少一些基本的东西,在左连接中使用聚合函数(总和)。
感谢您的帮助!
(系统是MSSQL)
+1用于在执行连接之前分别汇总结果。 – 2011-04-06 22:04:58
谢谢Rajesh。这就是我最终使用的! – nth 2011-04-07 18:24:42