declare@cardnumnvarchar(80) declare@personidnvarchar(80) declare@accessionstateint declare@personid222nvarchar(80) declare _cor cursorfor select cardnum as cn from psnaccount where cardnum <>''groupby cardnum havingcount(cardnum)>1orderby cn desc open _cor FETCHNEXTFROM _cor INTO@cardnum WHILE@@FETCH_STATUS=0 BEGIN PRINT''+@cardnum set@personid='' set@personid222='' /**//* 查询出离职人员编号 */ declare personid_cursor cursorfor selecttop1 personid,accessionstate from psnaccount where cardnum =@cardnumand accessionstate =4 open personid_cursor FETCHnextfrom personid_cursor into@personid,@accessionstate WHILE@@FETCH_STATUS=0 BEGIN fetchnextfrom personid_cursor into@personid,@accessionstate END close personid_cursor deallocate personid_cursor /**//* END 查询出离职人员编号 */ /**//* 查询出在职人员编号 */ declare personid_cursor cursorfor selecttop1 personid,accessionstate from psnaccount where cardnum =@cardnumand accessionstate =2 open personid_cursor FETCHnextfrom personid_cursor into@personid222,@accessionstate WHILE@@FETCH_STATUS=0 BEGIN fetchnextfrom personid_cursor into@personid222,@accessionstate END close personid_cursor deallocate personid_cursor /**//* END 查询出在职人员编号 */ /**//* 更新编号 */ if@personid<>''and@personid222<>'' BEGIN UPDATE atdtimecarddata set PERSONID =@personid222where personid =@personidand receivedate >='2005-09-12' END /**//* END 更新编号 */ FETCHNEXTFROM _cor INTO@cardnum END CLOSE _cor DEALLOCATE _cor