如题,在表base中新增了一字段 zh :nvarchar(8) ,允许空,表共有3105行,现需要对字段zh进行更新,第一行值为 31010001,下一行在前一行 递增1,最后一行值为 31013105,用游标处理卡死,现请高手支招,谢谢!说明:表base中有其它字段,oldzh是主键,nvarchar(14),字段zh更新好后将删除字段 oldzh,并将zh设成新的主键
------解决思路----------------------
;with acherat as
(
select *,rownum=row_number() over (order by oldzh)
from base
)
update a
set a.zh = ltrim(b.rownum+31010000)
from base a,acherat b
where a.oldzh = b.oldzh
------解决思路----------------------
WITH t AS (
SELECT oldzh,
ROW_NUMBER() OVER(ORDER BY oldzh) rn
FROM base
)
UPDATE base
SET zh = CONVERT(nvarchar(8), 31010000 + rn)
FROM base, t
WHERE t.oldzh = base.oldzh
其他的删主键、删字段、建主键自己补上。