如何编写单个SQL查询以获取SQL Server 2008中其他列的聚合列?

问题描述:

我有一个表Employee如何编写单个SQL查询以获取SQL Server 2008中其他列的聚合列?

enter image description here

如何得到一个列作为单独的列的汇总表,如下图所示吗?

enter image description here

+0

那你试试这么远吗? –

+0

我试过但没有得到如何着手。 – Gupteshwari

+1

您正在使用哪种dbms产品? – jarlh

我去年所面临的确切的问题。希望这个帮助。

SELECT e1.EmpId, 
     e1.EmpName 
     e1.EmpSalary, 
     SUM(e2.EmpSalary) AS Aggregate_Salary 
FROM Employee e1 JOIN Employee e2 
ON e1.id >= e2.id GROUP BY e1.EmpId, 
    e1.EmpName, 
    e1.EmpSalary 

使用相关子查询:

select EmpId, EmpName, EmpSalary, (select sum(EmpSalary) from Employee e2 
            where e2.EmpId <= e1.EmpId) as AggregateSalary 
from Employee e1 

你没有指定你的DBMS,所以这是ANSI SQL:

select empid, 
     empname, 
     empsalary, 
     sum(empsalary) over (order by empid) as aggregate_salary 
from employee 
order by empid;