表“RAW_DATA”的结构如下所示,具有给定的列和一组示例数据
ID CompletedDate TypeID AgentID
1 2015-09-22 51 301
2 2015-08-6 50 301
3 2015-07-12 50 305
4 2017-04-21 51 305
5 2015-05-5 51 305
6 2016-09-8 50 301
7 2015-02-17 50 301
8 2015-01-12 51 311
9 2015-10-4 50 311
10 2015-12-2 51 311
使用下面的查询,我可以从此表中获取一个月的总计数
SELECT FORMAT(CompletedDate,'MMMM yyyy') as Date,datepart(year,CompletedDate) YearNr,datepart(month,CompletedDate) MonthNr,
COUNT(CASE WHEN TypeID=50 then 1 ELSE NULL END) as "Type1",
COUNT(CASE WHEN TypeID=51 then 1 ELSE NULL END) as "Type2"
FROM RAW_DATA
group by datepart(year,CompletedDate),datepart(month,CompletedDate), FORMAT(CompletedDate,'MMMM yyyy')
我得到的示例结果看起来像
Date YearNr MonthNr Type1 Type2
September 2016 2016 9 12282 224
October 2015 2015 10 54 0
November 2017 2017 11 5535 65
March 2017 2017 3 1669 5641
December 2016 2016 12 772 39
现在我必须每月对“AgentID”列进行一次额外的分组。因此,结果集应该类似于每个 Agent ,基于上述条件的每个月的计数
我尝试在上述查询的选择和分组部分中添加“AgentID”列,如下所示
SELECT AgentID,FORMAT(CompletedDate,'MMMM yyyy') as Date,datepart(year,CompletedDate) YearNr,datepart(month,CompletedDate) MonthNr,
COUNT(CASE WHEN TypeID=50 then 1 ELSE NULL END) as "Type1",
COUNT(CASE WHEN TypeID=51 then 1 ELSE NULL END) as "Type2"
FROM RAW_DATA
group by AgentID, datepart(year,CompletedDate), datepart(month,CompletedDate), FORMAT(CompletedDate,'MMMM yyyy')
但是生成的输出就像
Date AgentID YearNr MonthNr Type1 Type2
April 2016 3642 2016 4 21 39
November 2016 2887 2016 11 1 0
March 2017 2309 2017 3 0 24
May 2017 2784 2017 5 1 24
December 2017 3355 2017 12 2 0
这不是预期的结果。例如,对于每个代理,结果集中必须有所有月份的条目
Agent1 April2016
Agent1 Nov 2017
Agent1 Dec 2016
现在是 Agent2
Agent2 April2016
Agent2 Nov 2017
Agent2 Dec 2016
那么我怎样才能获得每个代理的每月计数?
最佳答案
您只需按agentId
和month_year分组:
SELECT
AgentID,
FORMAT(CompletedDate,'MMMM yyyy') as MonthYear,
COUNT(CASE WHEN TypeID=50 then 1 ELSE NULL END) as "Type1",
COUNT(CASE WHEN TypeID=51 then 1 ELSE NULL END) as "Type2",
COUNT(*) AS Total
FROM RAW_DATA
group by AgentID, FORMAT(CompletedDate,'MMMM yyyy');
关于sql - 表中每个组的每月计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48021864/