Sql server 如何在sql联接中使用sum函数

Sql server 如何在sql联接中使用sum函数,sql-server,Sql Server,如何在SQLServer2008的联接中使用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

如何在SQLServer2008的联接中使用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' 
当使用时,例如,您需要对其余数据项使用聚合函数,或按它们分组

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

在使用聚合函数时,应该有一个GROUPBY子句,并在select列表中包含其他列

所以这里你应该加上

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

在查询结束时

上面的SQL有什么问题?您的
WHERE
子句将右外部联接转换为内部联接。这个问题没有说明表之间关系的基数。如果一个PK_Id与多个d.InstCllnHdr_FK匹配,则SUM函数将对这些多个匹配进行求和。这是Kalaivan想要的吗?通过使用上面的查询,以下错误显示列“LGen_lninstcln_h.LnRcptNo”在选择列表中无效,因为它不包含在聚合函数或GROUP by子句中。@Kalaivan:h.LnRcptNo不是此查询中选择列表的一部分。我想你不小心把它改了。如果按原样执行查询而不做任何更改,会发生什么情况?