我有一个查询
我必须计算每个分支机构和每个客户的月销售额(数据来自一张表)
数据如下所示
我可以编写查询来查询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/