sql Update列与sum其他列数据

时间:2017-04-08 04:10:30

标签: sql sql-server datagrid sql-update

我想用行完整数据表数据进行更新,但是如何?

看看我想做什么:

enter image description here

此代码仅用于显示行数的和数据,但不能使用NULL值。

−32768

但我想用所有和数据更新我的特定列。

我试过这段代码却失败了:

32767

此代码也尝试了我:

select 
    sum(tc6671 + tf6671 + pc6671 + pf6671 + tc8572 + tf8572 + pc8572 + pf8572 +
        tc6672 + tf6672 + tc6673 + tf6673 + pc6673 + pf6673 + pc6674 + pf6674 + tc5852 + tf5852 +
        tc5853 + tf5853) as Test 
from 
    cmt_7th;

1 个答案:

答案 0 :(得分:0)

使用coalesce来处理空值,而不是tc6671 + tf6671。

coalesce(tc6671,0)+coalesce(tf6671,0)+...

因此,您的更新声明将类似于

UPDATE c
    SET c.total = coalesce(c.tc6671,0) + coalesce(c.tf6671,0) + coalesce(c.pc6671,0) 
    + coalesce(c.pf6671,0) + coalesce(c.tc8572,0) + coalesce(c.tf8572,0) 
    + coalesce(c.pc8572,0) + coalesce(c.pf8572,0) + coalesce(c.tc6672,0) 
    + coalesce(c.tf6672,0) + coalesce(c.tc6673,0) + coalesce(c.tf6673,0) 
    + coalesce(c.pc6673,0) + coalesce(c.pf6673,0) + coalesce(c.pc6674,0) 
    + coalesce(c.pf6674,0) + coalesce(c.tc5852,0) + coalesce(c.tf5852,0) 
    + coalesce(c.tc5853,0) + coalesce(c.tf5853,0)
FROM cmt_7th c

但是如果您使用select sum(coalesce(c.tc6671,0) ...,那么您将只获得1行和列,其中所有列的总和。 看看我的意思

http://rextester.com/LUIPOW59089