| 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值是一致的。 我怎么能这样做?
答案 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;
答案 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,第二列为空,反之亦然?还是有其他情况?