我有一个查询

我必须计算每个分支机构和每个客户的月销售额(数据来自一张表)

数据如下所示



我可以编写查询来查询Jan_2019的总销售额:

我为2019年2月创建一个临时表。我可以使用联接并组合两个表,但是在Feb_2019中,如果添加了新客户,那么在联接表时,我会缺少新客户,因此,该月的总销售额不匹配。

有人可以帮忙吗?

我已经在下面编写了这样的查询

;with a as
(
select branchid, customer, sum(totalsales) as jan_totalsales from tableA
where year = 2019 and month = 1
group by customer, branched
), feb as

(
select branchid, customer, sum(totalsales) as feb_totalsales  from tableA
where year = 2019 and month = 2
group by customer, branched
)
select a.branchid, feb.branchid, a.jan_totalsales, feb.feb_totalsales
 from a
left join feb on feb.branchid = a.branchid


我必须在临时表中创建它并在March_2019做

同样,从Jan数据中加入后,我没有得到新的客户。

谁能帮我简化这个过程?

最佳答案

您所追求的是条件聚合。这应该使您走上正确的道路:

SELECT branchid,
       customer,
       SUM(CASE WHEN [Year] = 2019] AND [Month] = 1 THEN totalsales ELSE 0 END) AS JanSales,
       SUM(CASE WHEN [Year] = 2019] AND [Month] = 2 THEN totalsales ELSE 0 END) AS FebSales,
       ....
FROM YourTable
GROUP BY branchid,
         customer;


如果您不了解这是如何工作的,请询问。归根结底,是您必须支持SQL,而不是我自己或Stack Overflow上的其他志愿者。

关于mysql - 连接两个表时计算总销售额而不丢失任何值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54724736/

10-11 03:31