简体   繁体   English

如何在SQL Server 2014中的同一张表中用总和列更新列?

[英]How to : update column with sum column in same table in SQL Server 2014?

Before table data: 表数据之前:

-----------------------
|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 |   |

Total is sum value from same id 总计是来自相同ID的总和

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

For now I use the insert method with create table data2 (ID,TOTAL) 现在,我将insert方法与create table data2(ID,TOTAL)一起使用

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

Then I do SELECT JOIN FROM DATA2 AND DATA 然后我SELECT JOIN FROM DATA2 AND DATA

After table 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 |

To update the value total to table, you need to have the column.. 要将总计值更新为表,您需要具有该列。

alter table tblname
add total int

If this is not a one time approach,i would recommend creating a view like below 如果这不是一次性的方法,我建议创建如下所示的视图

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

if you want to update table as one time excercise 如果您想一次更新表

;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

Another way to update the total. 更新总数的另一种方法。

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 演示

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM