【发布时间】:2017-03-15 07:25:27
【问题描述】:
我有一张包含员工数据的表格
EmployeeNum | Department | Salary
1000 | 1 | 400
1001 | 1 | 200
1002 | 2 | 350
1003 | 2 | 450
我想在一个选择查询中获得部门工资和每个员工工资的总和。预期的输出是
SQNO | EmployeeNum | Department | Salary
1 | 1000 | 1 | 400
2 | 1001 | 1 | 200
| | 1 | 600
3 | 1002 | 2 | 350
4 | 1003 | 2 | 450
| | 2 | 800
我的方法是
select
case
when EmployeeNum is null
then null
else ROW_NUMBER() over (order by Department)
end as SQNO,
EmployeeNum,
Department,
SUM(Salary)
from
EMPDetails
group by
GROUPING sets(EmployeeNum, Department), (Department)
这个选择的输出是
SQNO | EmployeeNum | Department | Salary
1 | 1000 | 1 | 400
2 | 1001 | 1 | 200
| | 1 | 600
4 | 1002 | 2 | 350
5 | 1003 | 2 | 450
| | 2 | 800
有没有办法按照我们的意愿跳过行号或任何其他想法如何做到这一点?
【问题讨论】:
-
我对您的问题感到满意并回答了它,但在我看来,这个标题完全具有误导性。像“一组复数”之类的东西会更接近你的真正问题。
标签: sql sql-server sql-server-2008