在连接两个表时计算总销售额而不会丢失值

问题描述 投票:0回答:1

我有一个问题

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

数据应如下所示

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

我为Feb_2019创建了一个临时表。我可以使用连接并组合2个表,但是在2月201日,如果添加了新客户,那么当加入表时我会错过新客户,并且由于这个原因,该月的总销售额不匹配。

任何人都可以帮忙吗?

我在下面写了这样的查询

;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数据加入。

任何人都可以帮我简单吗?

mysql sql-server ssms
1个回答
0
投票

你在这里是一个有条件的聚合。这应该让你走上正确的道路:

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上的其他志愿者。

© www.soinside.com 2019 - 2024. All rights reserved.