sql server - SQL Challenge: Why SQL query does not group according to NULL -


i challenge sql community here. let have following data , sql query:

create table (     a_id integer unique,     code int );  create table b (     a_id integer foreign key references a(a_id),     b_count int );  insert values (1, 20); insert values (3, 30); insert values (null, 30);  insert b values (1, 100); insert b values (1, 120); insert b values (null, 200);  select a.a_id, sum(b.b_count) bsum left join b on a.a_id = b.a_id group a.a_id 

why doesn't sql query sum value null? in other words, why get

a_id    bsum --------------- null    null 1       220 3       null 

instead of

a_id    bsum --------------- null    200 1       220 3       null 

this has nothing sum(). reason left join , way null works comparisons. query:

select a.a_id, sum(b.b_count) bsum left join      b      on a.a_id = b.a_id group a.a_id; 

on rows a_id null, = evaluates null -- not true. seem want is:

select a.a_id, sum(b.b_count) bsum left join      b      on a.a_id = b.a_id or (a.a_id null , b.a_id null) group a.a_id; 

Comments