SQL查询聚合结果

时间:2020-05-02 08:41:35

标签: sql sql-server

我有一个包含以下数据的表

AgentID     AgentName   ReportDate  LOBName SubAct  CountA  CountB
------------------------------------------------------------------    
AgentSA1    Agent SA1   04/30/2020  SubActivity SA1     2   22
AgentSA1    Agent SA1   04/30/2020  SubActivity SA2     2   11
AgentSA1    Agent SA1   05/02/2020  SubActivity SA1     1    7
AgentSA2    Agent SA2   04/30/2020  SubActivity SA1     2    6
AgentSA2    Agent SA2   04/30/2020  SubActivity SA2     2    5
AgentSA2    Agent SA2   05/02/2020  SubActivity SA2     1    3

我想要类似的结果。

AgentID     AgentName   ReportDate  LOBName SubAct  CountA  CountB  CalculatedClo
---------------------------------------------------------------------------------
AgentSA1    Agent SA1   04/30/2020  SubActivity SA1     2       22      4
AgentSA1    Agent SA1   04/30/2020  SubActivity SA2     2       11      4
AgentSA1    Agent SA1   05/02/2020  SubActivity SA1     1        7      1
AgentSA2    Agent SA2   04/30/2020  SubActivity SA1     2        6      4
AgentSA2    Agent SA2   04/30/2020  SubActivity SA2     2        5      4
AgentSA2    Agent SA2   05/02/2020  SubActivity SA2     1        3      1

最后一列是计算出的一列(CalculatedClo),该列应具有基于报告日期的分组和SubAct的计算。

有人可以帮助我产生这些价值吗?

1 个答案:

答案 0 :(得分:1)

如果您尝试将sumCountA用作计算列,则可以像下面这样简单地使用join

;with temp as
(
    SELECT ReportDate, 
           SubAct, 
           SUM(CountA) Summed
    FROM YourTable
    GROUP BY ReportDate, 
             SubAct
)
SELECT t.*, x.Summed as CalculatedCol
FROM YourTable t
JOIN temp x ON t.SubAct = x.SubAct AND t.ReportDate = x.ReportDate
order by AgentID, ReportDate;

请找到演示 here