SQL Server:分组替换NULL

时间:2016-06-14 07:48:33

标签: mysql sql

我有这样的表:

 | id | column_a | column_b |
 |  1 |  NULL    | 111      |
 |  1 |  222     | NULL     |
 |  2 |  NULL    | 333      |
 |  2 |  444     | NULL     |

我想像这样分组

 | id | column_a | column_b |
 |  1 |  222     | 111      |
 |  2 |  444     | 333      |

Column_a和column_b是varchar。和模式NULL值是一致的。 我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

聚合函数SUM不像普通函数和运算符那样处理NULL。遇到NULL操作数时,它不会立即返回NULL,而是在计算结果时只考虑非NULL字段。

所以,你可以这样解决..

select id, sum(column_a) as column_a, 
sum(column_b) as column_b 
from tbl1
group by id;

Demo Here

答案 1 :(得分:0)

尝试这个......

select id, sum(nvl(column_a,0)) as column_a, 
sum(nvl(column_b,0)) as column_b 
from tbl1
group by id;

答案 2 :(得分:0)

我认为您的问题不是添加应用数值..

也许你的意思是这样......

select ISNULL(ta.id,tb.id) id, ta.a,tb.b
from 
(select * from t where a is not null) ta
full join
(select * from t where b is not null) tb
on ta.id = tb.id

你应该更好地解释问题的本质

正如@sagi所说,这张桌子会得到什么样的价值?每个id只有两个记录?第一列为null,第二列为空,反之亦然?

还是有其他情况?