2012-07-18 64 views
1

如何在sql server 2008連接中使用sum函數?如何在sql連接中使用sum函數

SELECT SUM(d.TranTypeAmt), 
     h.LnNo, 
     h.LoanRcptAmt, 
     d.Trantype, 
     d.TranTypeAmt 
FROM LGen_LnInstClln_h h 
     RIGHT OUTER JOIN LGen_LnInstClln_d d 
     ON h.PK_Id = d.InstCllnHdr_FK 
WHERE h.LnNo = '40009' 
+0

什麼是與上面的SQL問題的末尾添加

group by h.LnNo, h.LoanRcptAmt, d.Trantype, d.TranTypeAmt 

? – DaveShaw 2012-07-18 11:08:45

+1

您的'WHERE'子句將右外連接變爲內連接。 – 2012-07-18 11:10:02

回答

0

使用聚合函數時,您應該有一個group by子句,並且與select列表中的其他列一起使用。

所以在這裏,你應該在查詢

+0

感謝gusy它工作正常 – kalaivanan 2012-07-18 12:10:27

2

當使用aggregate function,如SUM()你需要的數據項目的其餘部分,或者將它們分組要麼使用聚合函數。

select SUM(d.TranTypeAmt), h.LnNo,h.LoanRcptAmt,d.Trantype,d.TranTypeAmt 
from LGen_LnInstClln_h h 
right outer join LGen_LnInstClln_d d on h.PK_Id=d.InstCllnHdr_FK 
where h.LnNo='40009' 
GROUP BY h.LnNo,h.LoanRcptAmt,d.Trantype,d.TranTypeAmt 
+0

這個問題沒有說明表之間關係的基數。如果一個PK_Id匹配多個d.InstCllnHdr_FK,那麼SUM函數將總結這些多個匹配。這是卡拉瓦那人想要的嗎? – Black 2012-07-18 11:13:52

+0

通過使用上述查詢以下錯誤顯示olumn'LGen_LnInstClln_h.LnRcptNo'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。 – kalaivanan 2012-07-18 11:37:01

+1

@kalaivanan:h.LnRcptNo不是此查詢中SELECT列表的一部分。我想你不小心改變了它。按原樣執行查詢時會發生什麼情況,而不會更改任何內容? – Josien 2012-07-18 11:52:53