现有表a(id,money),表b(id,money,year[年度]) 
两个表的id是对应的,a.money全都为0.00,b.money会根据b.year年度变化,
怎样能把b.money更新到a.money,请指教

解决方案 »

  1.   

    update a
    set money=b.money
    from a 
    inner join b on a.id=b.id
      

  2.   

    update a
    set [money]=t.[money]
    from(select ID,
                sum([money]),
                [year]
         from b
         group by ID,[year])t
    where a.id=t.id
      

  3.   

    谢谢大家,我只要更新a.money为0.00的       这个语句怎样能写到提取数据里,而不是用update     比如有没有什么替换函数 ,我用replace试了下不行(当a.money='0.00'的时候替换为对应的b.money)   这是写在存储过程里的,各位还有什么方法吗?
      

  4.   

    update a set a.[money] = b.[money]
    from a inner join b on a.id=b.id
    where (a.[money] = 0);
      

  5.   

    不是用 update?难不成是这样:
    SELECT 
    a.id,
    case 
    when (a.[money] = 0) then b.[money] 
    else a.[money] 
    end as 'money',
    b.[year]
    from a inner join b on a.id=b.id;
      

  6.   


    ..., case a.money = 0 then b.money else 0 end,...
      

  7.   

    ..., case when a.money = 0 then b.money else 0 end,...更正一下
      

  8.   

    select a.id,(case when a.[money]=0.00 then b.[money] else a.[money]) [money]
    from a left join b on a.id=b.id
      

  9.   


    少个END
    和我一样,手太快,呵呵
      

  10.   

    select a.id,(case when a.[money]=0.00 then b.[money] else a.[money] end) [money]
    from a left join b on a.id=b.id