--结转4月到5月insert 表(月份,期初数)
select '200405',期末数量
from 表
where 月份='200404'

解决方案 »

  1.   

    UPDATE kc (qcsl)
            SELECT qmsl
          FROM kc
          WHERE yearmonth = '200404'
      

  2.   

    declare @月份 char(6)
    set @月份='200405' --结转到那一个月if exists(select 1 from 表 where 月份=@月份) --如果该月数据已经存在,则更新
    update 表 set 期初数量=b.期末数量
    from 表 a join(
    select 期末数量 from 表
    where 月份=convert(char(6),dateadd(month,-1,@月份+'01'),112)
    )b on a.月份=@月份 --and ..应该还要关联字段吧? 如果有,在这里加上
    else
    insert 表(月份,期初数量)
    select @月份,期末数量
    from 表
    where 月份=convert(char(6),dateadd(month,-1,@月份+'01'),112)
      

  3.   

    我这样做了,插入的时候可以,但是数据存在时没有改变,修改没有效果:
    declare @yuefen char(6)
    set @yuefen='200406' --结转到那一个月if exists(select 1 from Zw_kcbak where yearmonth=@yuefen) --如果该月数据已经存在,则更新
    update Zw_kcbak set qcsl=b.qmsl
    from Zw_kcbak a join(
    select qmsl from Zw_kcbak
    where yearmonth=convert(char(6),dateadd(month,-1,@yuefen+'01'),112)
    )b on a.yearmonth=@yuefen --and ..应该还要关联字段吧? 如果有,在这里加上
    else
    insert Zw_kcbak(yearmonth,qcsl)
    select @yuefen,qmsl
    from Zw_kcbak
    where yearmonth=convert(char(6),dateadd(month,-1,@yuefen+'01'),112)不好意思,能否再告诉一条直接修改的方式?
      

  4.   

    邹老师:我这样写对吗?
    UPDATE Zw_kcbak
    SET qcsl = b.qmsl
    FROM Zw_kcbak a JOIN
            (SELECT qmsl
          FROM Zw_kcbak
          WHERE yearmonth = CONVERT(char(6), dateadd(month, - 1, '200406' + '01'), 112)) b ON 
        a.yearmonth = '200406'
    但是6月份的期初数据依然是0
      

  5.   

    UPDATE Zw_kcbak
    SET qcsl = b.qmsl
    FROM Zw_kcbak a JOIN
            (SELECT qmsl
          FROM Zw_kcbak
    WHERE yearmonth = '200405') b ON a.yearmonth = '200406'
    我这么写就把数据改过来了!
      

  6.   

    --这样写也没问题啊UPDATE Zw_kcbak
    SET qcsl = b.qmsl
    FROM Zw_kcbak a JOIN
            (SELECT qmsl
          FROM Zw_kcbak
          WHERE yearmonth = CONVERT(char(6), dateadd(month, - 1, '200406' + '01'), 112)) b ON 
        a.yearmonth = '200406'