2016-05-30 30 views
1

我有2个表:更新客户表,发票数据

Customers(客户ID,TOT_SALES,tot_profits)

Invoices(客户ID,销售,利润)

发票可以有一到了很多发票同一个客户。

我试图计算发票的总销售额和利润并将其保存在客户中。

这里就是我:

select custid, sum(revenus), sum(profits) 
from invoices 
group by cust 

它给我回:

CustId Revenus  Profits 
1   1000  200 
2   2000  300 

到目前为止好。

我现在所不知道的是如何在相同的声明中将数据重新推送给客户。我在想

udpate customers 
    set tot_revenus, tot_profits 
    select custid, sum(revenus), sum(profits) 
    from invoices 
    group by cust 

但它不起作用。

任何帮助,将不胜感激

感谢

回答

1

你应该使用update with join

UPDATE Customers c 
INNER JOIN (SELECT custId,sum(revenus) as sum_rev,sum(profits) as sum_prof 
      FROM Invoices 
      GROUP BY custId) i 
ON(c.custId = i.custId) 
SET c.tot_sales = i.sum_rev, 
    c.tot_profits = i.sum_prof 

根据创建的derived表(含总和为每一个客户这基本上会更新customers表)。

+0

哇,很好,工作很好 –

相关问题