2012-10-25 230 views
2

我有一個SQL表SUM()數據基於另一列數據

Project ID  Employee ID   Total Days 

1     100     1 
1     100     1 
1     100     2 
1     100     6 
1     200     8 
1     200     2 

現在我需要這個表看起來像

Project ID  Employee ID   Total Days 

1     100     10 
1     200     10 

由於亞姆新的SQL,我是根據上述條件,很少使用SUM()。

+0

項目ID = 2爲僱員ID = 200 ???? –

回答

2

這裏有兩種方法

Declare @t Table(ProjectId Int, EmployeeId Int,TotalDays Int) 
Insert Into @t Values(1,100,1),(1,100,1),(1,100,2),(1,100,6),(1,200,8),(1,200,2) 

Approach1:

Select ProjectId,EmployeeId,TotalDays = Sum(TotalDays) 
From @t 
Group By ProjectId,EmployeeId 

Approach2:

;With Cte As(
Select 
    ProjectId 
    ,EmployeeId 
    ,TotalDays = Sum(TotalDays) Over(Partition By EmployeeId) 
    ,Rn = Row_Number() Over(Partition By EmployeeId Order By EmployeeId) 
From @t) 
Select ProjectId,EmployeeId,TotalDays 
From Cte Where Rn = 1 

結果

ProjectId EmployeeId TotalDays 
1   100  10 
1   200  10 
2

以下查詢產生兩列:EmployeeID,totalDays

SELECT EmployeeID, SUM(totalDays) totalDays 
FROM tableName 
GROUP BY EmployeeID 

跟進的問題:爲什麼是你想要的結果projectId1 and 2

+0

對不起,項目編號對所有員工都是一樣的。我只是跟着序列號,所有 –

+0

的項目編號都是1,所以這是一個錯字:D –

+0

不,對於所有員工來說,項目編號都是1.我的Apolozise,I錯誤地輸入。 –

1
select min("Project ID")as 'Project ID',"Employee ID" 
    , SUM("Total Days") as 'Total Days' 
from table1 
group by "Employee ID" 
相關問題