我有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