2015-08-25 71 views
1

可以說我有這樣的一個表:如何選擇X,SUM(X)?

ID_COMPANY ID_EMPLOYEE SALARY 
COMP0001  EMP0001  200 
COMP0001  EMP0002  100 
COMP0001  EMP0003  300 
COMP0002  EMP0001  200 
COMP0002  EMP0003  200 
COMP0003  EMP0002  200 

我想將列添加到我的表,以便它可以從基於ID_EmployeeSUM工資這樣的:提前

ID_COMPANY ID_EMPLOYEE SALARY TOTAL 
COMP0001  EMP0001  200  400 
COMP0001  EMP0002  100  300 
COMP0001  EMP0003  300  500 
COMP0002  EMP0001  200  400 
COMP0002  EMP0003  200  500 
COMP0003  EMP0002  200  300 

謝謝

回答

2

您可以預先計算通過CTE員工細分電子郵件數量,然後加入該CTE在查詢:

​​
+0

你不覺得,使用分區是一個更好的主意。像這樣 選擇*,SUM(工資)超過(由ID_employee分區)合計 從您的表 – Sagar

0

可以Join表格本身,並使用其中的一個做SUM

SELECT ID_COMPANY, ID_EMPLOYEE, SALARY, sub.SumSalary 
FROM Table t JOIN (SELECT ID_EMPLOYEE, SUM(SALARY) as SumSalary 
        FROM Table 
        GROUP BY ID_EMPLOYEE) sub ON t.ID_EMPLOYEE = sub.ID_EMPLOYEE 
1
select id_employee, sum(salary) from [table] group by id_employee 

這不是列「添加」表中,而是將輸出結果。由於如果添加新記錄,這個數據將會改變,所以最好用查詢動態生成它。如果您必須存儲它,則應將結果存儲在物化視圖或臨時表中,而不要將該列添加到原始表中。

+0

你不明白我的意思。我想顯示4列像我的情況。如果只顯示'id_employee'和'SUM(薪水)',我可以正確地做到這一點 –

+0

您可以回到原始表格,正如@DeadlyJesus回答如下。 – dinomix

0
Select *, SUM(Salary) Over (Partition by ID_employee) Total 
From YourTable