2017-09-20 34 views
0

表数据之前:如何:使用SQL Server 2014中的同一表中的sum列更新列?

----------------------- 
|ID |WORK|VALUE|TOTAL| 
----------------------- 
|ID1|WRITE |10 | | 
|ID1|TYPE |5 | | 
|ID2|READ |25 | | 
|ID2|SCAN |30 | | 
|ID3|PRINT |15 | | 
|ID4|SETTING|20 | | 
|ID5|REPAIR |5 | | 
|ID5|MAINTE |25 | | 
|ID5|MONITOR|20 | | 

总是从相同的id

ID1  10+5 
ID2  25+30 
ID3  15 
ID4  20 
ID5  50 

总和值现在我用插入方法与创建表DATA2(ID,TOTAL)

INSERT INTO DATA2(DATA2.ID, DATA2.TOTAL) 
    SELECT DATA.ID, SUM (DATA.VALUE) AS TOTAL 
    FROM DATA 
    GROUP BY DATA.ID 

然后我做SELECT JOIN FROM DATA2 AND DATA

表数据后

----------------------- 
|ID |WORK|VALUE|TOTAL| 
----------------------- 
|ID1|WRITE |10 |15 | 
|ID1|TYPE |5 |15 | 
|ID2|READ |25 |55 | 
|ID2|SCAN |30 |55 | 
|ID3|PRINT |15 |15 | 
|ID4|SETTING|20 |20 | 
|ID5|REPAIR |5 |50 | 
|ID5|MAINTE |25 |50 | 
|ID5|MONITOR|20 |50 | 
+0

你表数据后需要作为输出 – TheGameiswar

+0

尝试接受任何回答,如果他们帮助你 – TheGameiswar

回答

0

要更新的总价值表,你需要有列..

alter table tblname 
add total int 

如果这不是一次性的做法,我建议建立像一个视图下方

create view somename 
as 
    select id,work,value, 
    sum(value) over (partition by id) as total 
    from tabel 

,如果你想更新表作为一次锻炼; Tibial

;with cte 
as 
(select id,work,value, 
sum(value) over (partition by id) as total1 
from tablename 
) 
update t 
set t.total=c.total1 
from cte c 
join tablename t 
on t.id=c.id 
+0

亲爱@thegameiswar,谢谢它的成功:) –

0

更新总数的另一种方法。

UPDATE T1 
SET T1.TOTAL=T2.TOTAL 
FROM YOUT_TABLE T1 
JOIN (
SELECT ID,SUM(VALUE) AS TOTAL 
FROM YOUR_TABLE 
GROUP BY ID 
) T2 ON T1.ID=T2.ID 

DEMO

+0

亲爱@Shiju沙基它的工作,谢谢 –

相关问题