请查看下面的SQL查询
SELECT Client_Portfolio.*,
Client.Name AS "Client Name",
Provider.Name AS "Provider Name",
Initial_Fees.*,
Portfolio.VAT,
Portfolio.Invest_Amount,
Portfolio.Cash_Value,
SUM(Ongoing_Fees.Fee)
FROM Client_Portfolio
LEFT JOIN Client ON Client.idClient = Client_Portfolio.idClient
LEFT JOIN Portfolio ON Portfolio.idPortfolio = Client_Portfolio.idPortfolio
LEFT JOIN Provider ON Provider.idProvider = Portfolio.idProvider
LEFT JOIN Initial_Fees ON Initial_Fees.idPortfolio = Portfolio.idPortfolio
LEFT JOIN Ongoing_Fees ON Ongoing_Fees.idPortfolio = Portfolio.idPortfolio
ORDER BY Client_Portfolio.idClient
此查询会生成不正确的结果,但如果我删除“SUM(Ongoing_Fees.Fee)
”部分,则会生成正确的结果。
Ongoing_Fees
是一个表格,有些Portfolios
可能有Ongoing_Fees
,有些则没有。我试图分别对每个投资组合中的总Ongoing_Fees求和,并通过上述查询得到结果。但它出错了..它给了我整个表的Ongoing_Fees
总和,整个上面的查询只返回了一行!我该如何解决这个问题?
答案 0 :(得分:1)
您正在使用不带sum()
的汇总函数group by
,因此它会为您提供一行。
如果你想得到每组总和的结果,你必须在最后使用group by子句。
从讨论中您可能需要添加
在order by子句之前 group by Portfolio.idPortfolio
。
这将从选择中为每个idPortfolio提供总和值。
点击此处查看更多信息http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html