簡體   English   中英

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

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

表數據之前:

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

現在,我將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

然后我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 |

要將總計值更新為表,您需要具有該列。

alter table tblname
add total int

如果這不是一次性的方法,我建議創建如下所示的視圖

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

如果您想一次更新表

;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

更新總數的另一種方法。

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

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM