我要对字段类型为nvarchar进行sum(),不是数字的默认为0,不能更改表类型,急急,谢谢!!如表A(id int ,team nvarchar,a1 nvarchar,a2 nvarchar,a3 navarchar)select team,sum(a1) as a1,sum(a2) as a2,sum(a3) as a3 from A group by team但是由于a1,a2,a3是字符类型而出错,实际上a1,a2,a3全部是数字或者为空,只不过原来设置了为字符类型而不能修改,请高手指点,谢谢!!

解决方案 »

  1.   

    select team,
           sum(cast(a1 as dec(18,2))) as a1,
           sum(cast(a2 as dec(18,2))) as a2,
           sum(cast(a3 as dec(18,2))) as a3 
    from A 
    where isnumeric(a1)=1 and isnumeric(a2)=1 and isnumeric(a3)=1 
    group by team
      

  2.   

    sum(case when isnumber(a1)=1 then cast(a1 as numeric(10,2)) else 0 end)
      

  3.   

    應該改成case when
    額的不行
      

  4.   

     cast(isnull(a1,0) as int)try 
      

  5.   

    select team,
           sum(case when isnumeric(a1)=1 then cast(a1 as dec(18,2)) else 0 end ) as a1,
           sum(case when isnumeric(a2)=1 then cast(a2 as dec(18,2)) else 0 end ) as a2,
           sum(case when isnumeric(a3)=1 then cast(a3 as dec(18,2)) else 0 end ) as a3
    from A 
    group by team