不使用分组依据的重复行的总和

时间:2018-10-30 14:30:07

标签: sql sql-server

名为雇员的表如下:

id salary

10  100 
10  100
10  100

要获取以下输出,sql server 2012中的查询应该是什么

id salary 

10 300
10 300
10 300

那是薪金总额

4 个答案:

答案 0 :(得分:3)

基于示例数据,您可以使用窗口功能:

select e.*, sum(sal) over ()
from emp e;

但是,如果您希望每个Id的总薪水,则包含partition子句:

select e.*, sum(sal) over (partition by id) as tot_salary 
from emp e;

答案 1 :(得分:3)

您可能想要:

select e.*, sum(e.sal) over (partition by e.id) as total_salary
from employee e;

也就是说,我猜你想要每个id的总和。

答案 2 :(得分:2)

正确的方法是使用SUM的{​​{1}}窗口函数

ID

使用关联选择的另一种方法

select t.id, sum(salary) over (PARTITION BY ID) salary  
from T t

c# online

答案 3 :(得分:0)

ANSI SQL

SELECT emp.id, emp2.salary
FROM emp INNER JOIN
     (SELECT id, SUM(salary) AS salary GROUP BY id) AS emp2
        ON emp.id = emp2.id