2011-05-12 61 views
0

我想计算SumofWorkingHours如下所示,它基于empID。例如如果EmpID是1,那么它会在每个Admincode中总结工作时间,并在EmpID存在的所有行中显示总和。 请对此提出建议或查询。计算sql server中工作时间的总和,并在每行中显示EmpID

 
LoginName EmpID  Practice  AdminCode  WorkingHours SumofWorkingHours 
E1   1   Admin   IT   5.24   38.81 
E1   1   Admin   Finance  0.07   38.81 
E1   1   Admin   HR   33.50   38.81 
E2   2   Admin   Support  8.00   40.50 
E2   2   Admin   HR   32.50   40.50 
E3   3   Admin   Finance  5.50   45.08 
E3   3   Admin   Support  39.58   45.08 

此数据仅用于测试

+0

使用“通过EmpID组”。选择“Emp1,sum(WorkingHours)”。在Emp1上加入您的表格。 – 2011-05-12 09:27:55

回答

0

看起来你只是想求和EMPID,像这样:

select EmpId, sum(WorkingHours) 
from theTable 
group by EmpId 

要集成到一个更大的查询,具体返回的结果集你在你的问题中显示,你可以这样做:

select t1.LoginName, t1.EmpID, t1.Practice, 
    t1.AdminCode, t1.WorkingHours, tot.SumofWorkingHours 
from theTable t1 
inner join (select EmpID, sum(WorkingHours) as SumofWorkingHours 
      from theTable 
      group by EmpId) tot 
on tot.EmpID = t1.EmpID 
+0

我试过上面的查询,但没有发生任何事情。其实我想计算上述例子的工作时间和显示列的总和。当empid存在于下一行时,一位员工的一小时工作时间显示。 – 2011-05-12 10:09:58

+0

@Dinesh:你什么意思,'什么都没发生'?你有错误吗?你使用了正确的表名吗? – codeulike 2011-05-12 10:37:20

+0

表示显示相同的工作时间,如5.24,0.07,33.50,8.00,32.50,5.50,39.58。它不会计算工作时间。我想以上面的格式显示数据workinghours和sumofworkinghours和sumofworkinghour应显示在关于EmpID的每一行上。 – 2011-05-12 10:55:17

相关问题