现在遇到个问题,我做一个数据统计
如:表
tb1(c1 int, c2 int)
tb2(c3 int, c4 int)select sum(c1),sum(c2),sum(c3),sum(c4)
from (select c1,c2,0 as c3,0 as c4 from tb1
union all
select 0 as c1,0 as c2 ,c3,c4 from tb2)当选择内容为null时,统计的结果也为:
c1    c2   c3   c4
null null null null现在我想要的结果,当选择的内容为null时,统计结果为
c1    c2   c3   c4
 0     0    0    0如果问题我没有说明白,欢迎提问
请高手赐教,问题解决就结贴,万分感谢!!!

解决方案 »

  1.   


    --> 数据库版本:
    --> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
    --> 测试数据:tb1
    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'tb1') 
    AND type in (N'U')) 
    DROP TABLE tb1
    GO---->建表
    create table tb1([c1] int,[c2] int)
    insert tb1
    select 12,32
    GO--> 数据库版本:
    --> Microsoft SQL Server 2008 (RTM) - 10.0.1600.22
    --> 测试数据:tb2
    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'tb2') 
    AND type in (N'U')) 
    DROP TABLE tb2
    GO---->建表
    create table tb2([c3] int,[c4] int)
    insert tb2
    select 32,12
    GOselect sum(c1),sum(c2),sum(c3),sum(c4)
    from (select isnull(c1,0) as c1,isnull(c2,0) as c2,0 as c3,0 as c4 from tb1
    union all
    select 0 as c1,0 as c2 ,isnull(c3,0) as c3,isnull(c4 ,0) as c4  from tb2) t
    --> 删除表格
    --DROP TABLE tb2
      

  2.   

    select isnull(sum(c1), 0),isnull(sum(c2), 0),isnull(sum(c3), 0),isnull(sum(c4), 0)
    from (select c1,c2,0 as c3,0 as c4 from tb1
    union all
    select 0 as c1,0 as c2 ,c3,c4 from tb2)
      

  3.   

    如果是用sum函数的话,null可以直接统计的,不需要转换,除非是null加上一个数值
      

  4.   

    呵呵,楼主去联机丛书中搜索一下“isnull”的用法。。
      

  5.   


    --使用isnull(X,y)函数 如果X为NULL 则返回Y 
    --例子:
    --     SELECT ISNULL(NULL,0)返回0 
    --     SELECT ISNULL(1,0)返回1 
    select isnull(sum(c1), 0),isnull(sum(c2), 0),isnull(sum(c3), 0),isnull(sum(c4), 0)
    from (select c1,c2,0 as c3,0 as c4 from tb1
    union all
    select 0 as c1,0 as c2 ,c3,c4 from tb2)
      

  6.   

    select isnull(sum(c1),0),isnull(sum(c2),0),isnull(sum(c3),0),isnull(sum(c4),0)
    from (select c1,c2,0 as c3,0 as c4 from tb1
    union all
    select 0 as c1,0 as c2 ,c3,c4 from tb2) a