2013-02-18 58 views
-1

我试图获得客户所有发票的总成本。理想情况下,最终格式将为两列[客户名称]和[发票总额]。到目前为止,我已经把它分成了部分,所以我可以检查并更好地理解加入表的过程,并计算出每张发票上的项目总数,但现在我被卡住了。跨表的多个计算

正如你可以从我的screenshot看到的(必须链接到我的谷歌文档,因为我不能在这里发布图像 - 对不起)我得到的公司名称多次列出。一次为每个项目,也为每个发票号码,然后项目。如何将我的查询更改为仅显示客户名称一次,并将所有发票的总计相对应?

我有第3和第4行作为我认为接下来的内容的评论,所以我可以在将这个查询调整到我想要的输出之前按步骤工作。

感谢

+3

请使用代码标签将您的代码直接复制到问题中,而不是给出屏幕截图。这样,任何想帮助你的人都可以复制和粘贴以开始查询并修改它。请描述表格结构并将样本数据放入问题中。 – 2013-02-18 14:46:36

+0

如果公司名称是唯一的,请按公司名称和发票金额进行分组。 – 2013-02-18 14:46:42

+1

谢谢丹我将来会这样做。刚刚意识到我为每个人做了多少努力。谢谢您的帮助。 – Vendril 2013-02-18 15:01:54

回答

1
Select Customer.CustName, Sum(InvoiceItem.Quantity*Item.ItemPrice) As TotalValue 
    From Customer 
     Inner Join Invoice On Customer.CustABN = Invoice.CustABN 
     Inner Join InvoiceItem On Invoice.InvoiceNo = InvoiceItem.InvoiceNo 
     Inner Join Item On InvoiceItem.ItemNo = Item.ItemNo 
Group By Customer.CustName 
+3

恭喜@Ciarán取得1000的代表权。既然是我的赞同,那就把你放在那里,你欠我一杯啤酒。 – 2013-02-18 15:12:03

+0

谢谢。你在什么大陆上? – 2013-02-18 15:12:51

+0

非常感谢您的帮助。对不起,我没有发布我的代码:/(n00b错误)我意识到我的别名非常混乱。您的查询是完美的。现在要研究更多关于连接的知识,以便更好地理解它们。 – Vendril 2013-02-18 15:15:03

0

分组可以帮助,你也需要检查,如果你的DBMS允许不使用agregate功能(一些数据库不ALLW它,并返回误导性的结果)分组。 多家公司是因为关系公司发票产品我猜。

1

像这样的东西应该工作使用SUMGROUP BY

SELECT CustomerName, SUM(itemPrice * qty) InvoiceTotal 
FROM YourTables With Your Joins 
GROUP BY CustomerName 

如果你发布你上面的整个查询,我可以复制并粘贴到的例子。但是这应该让你朝着正确的方向前进。