UPDATE kc (qcsl) SELECT qmsl FROM kc WHERE yearmonth = '200404'
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)
我这样做了,插入的时候可以,但是数据存在时没有改变,修改没有效果: 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)不好意思,能否再告诉一条直接修改的方式?
邹老师:我这样写对吗? 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
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' 我这么写就把数据改过来了!
--这样写也没问题啊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'
SELECT qmsl
FROM kc
WHERE yearmonth = '200404'
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)
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)不好意思,能否再告诉一条直接修改的方式?
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
SET qcsl = b.qmsl
FROM Zw_kcbak a JOIN
(SELECT qmsl
FROM Zw_kcbak
WHERE yearmonth = '200405') b ON a.yearmonth = '200406'
我这么写就把数据改过来了!
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'