有用户.dbf,想对同一村、同一组相同的农户名称进行按“农户名称+流水号”编号方式得到“新农户名称”,如“更新后的用户表结构”,请前辈指导下这应该怎样操作啊?先感谢前辈了!
原始表结构如下:
用户.dbf
村名称 组名称 农户名称 新农户名称
白头村 五组 王林强
白头村 五组 王林强
白头村 五组 王林强
白头村 七组 唐真贵
白头村 八组 唐真贵
白头村 八组 唐真贵
白头村 九组 唐真贵
更新后的用户表结构:
用户.dbf
村名称 组名称 农户名称 新农户名称
白头村 五组 王林强 王林强1
白头村 五组 王林强 王林强2
白头村 五组 王林强 王林强3
白头村 七组 唐真贵 唐真贵1
白头村 八组 唐真贵 唐真贵1
白头村 八组 唐真贵 唐真贵2
白头村 九组 唐真贵 唐真贵1
------解决方案--------------------------------------------------------
CREATE TABLE 用户 (村名称 C(6),组名称 C(4),农户名称 C(6),新农户名称 C(10))
INSERT INTO 用户 VALUES ([白头村],[五组],[王林强],[])
INSERT INTO 用户 VALUES ([白头村],[五组],[王林强],[])
INSERT INTO 用户 VALUES ([白头村],[五组],[王林强],[])
INSERT INTO 用户 VALUES ([白头村],[七组],[唐真贵],[])
INSERT INTO 用户 VALUES ([白头村],[八组],[唐真贵],[])
INSERT INTO 用户 VALUES ([白头村],[八组],[唐真贵],[])
INSERT INTO 用户 VALUES ([白头村],[九组],[唐真贵],[])
SELECT 村名称,组名称,农户名称,COUNT(*) NUM FROM 用户 GROUP BY 1,2,3 INTO CURSOR TEMP
SELECT TEMP
SCAN
NUM1=1
SELECT 用户
SCAN FOR CHRTRANC(村名称+组名称+农户名称,[ ],[])==CHRTRANC(TEMP.村名称+TEMP.组名称+TEMP.农户名称,[ ],[])
REPLACE 新农户名称 WITH ALLTRIM(农户名称)+TRANSFORM(NUM1)
NUM1=NUM1+1
ENDSCAN
SELECT TEMP
ENDSCAN
SELECT 用户
BROWSE
------解决方案--------------------------------------------------------
可以用
SELECT *,RECNO() AS ID INTO CURSOR TTG FROM TT
SELECT 村名称,组名称,农户名称,农户名称+TRANSFORM((select COUNT(*) FROM ttg WHERE ;
村名称=a.村名称 AND 组名称=a.组名称 AND 农户名称=a.农户名称 AND a.id>=id;
)) as ss FROM ttg a
------解决方案--------------------------------------------------------
Select distinct 村名称,组名称,农户名称 from 用户 into cursor 用户临时表
Select 用户临时表
Scan
Select 用户
num=1
Scan for 村名称=用户临时表.村名称 and 组名称=用户临时表.组名称 and 农户名称=用户临时表.农户名称
Replace 新农户名称 with 农户名称+alltrim(str(num))
Num=num+1
Endscan
endscan