跨表的多次计算

时间:2013-02-18 14:44:08

标签: sql oracle

我正在尝试为客户获取所有发票的总成本。理想情况下,结束格式将是两列[客户名称]和[发票总额]。到目前为止,我已将其分解为部分,以便我可以检查并更好地了解加入表格的过程并进行计算以获得每张发票上的项目总数,但现在我被卡住了。

正如您从screenshot中看到的那样(因为我无法在此处发布图片,因此无法链接到我的Google文档 - 抱歉)我多次列出公司名称。每个项目以及每个发票编号和项目的一次。如何更改查询以仅显示客户名称一次,并将所有发票的相应总数合并?

我有第3行和第4行作为我认为下一步的注释,所以我可以在将查询微调到我想要的输出之前逐步完成。

由于

3 个答案:

答案 0 :(得分:1)

这样的事情应该可以使用SUMGROUP BY

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

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

答案 1 :(得分: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

答案 2 :(得分:0)

分组可能会有所帮助,您还需要检查dbms是否允许在不使用agregate函数的情况下进行分组(某些DBMS不会将其全部用掉,并返回误导性结果)。 多家公司是因为我猜的关系公司 - 发票 - 产品。

相关问题