2015-10-07 75 views
0

如何获得提供从表收集的Collection.Amount总和,有没有对所有JId项目,但只适用于那些JId具有对他们的一些支付左加入到获得列的总和在第二个表

ALTER PROCEDURE dbo.test 
AS 
select JobCard.JId, sum(cast(isnull(Collection.Amount, 0) as bigint)) as [Amount] 
from JobCard left join Collection on JobCard.JId=Collection.JId 
group by JobCard.JId, Collection.Amount 
order by JobCard.JId 
+0

那么你的查询有什么问题? –

回答

1

GROUP BY条款改为:

group by JobCard.JId 
+0

是的,这是正确的。 – pedram

+0

如果有帮助,您可以将其标记为答案。 – laylarenee

+0

谢谢。接受了答案。 – insistent

2

我想你应该写这样的查询,这会给你一个完美的结果。

ALTER PROCEDURE dbo.test 
AS 
    SELECT J.JId, 
      SUM(CAST(ISNULL(C.Amount, 0) AS BIGINT)) AS [Amount] 
    FROM JobCard J 
      LEFT JOIN COLLECTION C 
       ON J.JId = C.JId 
    GROUP BY 
      J.JId 
    ORDER BY 
      J.JId 

需要从group by子句中移除Collection.Amount。