如何添加序号?

buytrip 2008-12-30 06:09:41
有一个数据表:
objectid c_name subid
001 sdfsdf
001 45sfd
002 sdfsdf
003 ssdfsdf
002 sdfsfd54
--------------------------
按object分组然后按顺序生成subid
即是以下的结果:
objectid c_name subid
001 sdfsdf 1
001 45sfd 2
002 sdfsdf 1
003 ssdfsdf 1
002 sdfsfd54 3
----------------------------
想到过生成过按objectid生成过渡表来做,但是觉得比较麻烦
不知道有没更好的办法,谢谢

...全文
158 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
buytrip 2008-12-31
  • 打赏
  • 举报
回复
呵呵,两位真的是太厉害了,十分感谢两位的回复.
而且十豆三老师想的还比较周全,连非vfp9.0的情况也想到了。
当然,wwwwb回复的也很好。两位的回复基本上都是异曲同工。
此了说声谢谢可以表达感激之外,也不知道可以做什么了,就只有结贴给分啦。
十豆三 2008-12-31
  • 打赏
  • 举报
回复


Update 原表名 Set subid=(Select Count(*)+1 From 原表名 B Where b.objectid=原表名.objectid And B.subid<原表名.subid)

改为

Select a.objectid,a.c_name,Count(a.objectid) as subid From 原表名 a Left Join 原表名 b On a.objectid=b.objectid And a.subid<=b.subid Group By a.objectid,a.c_name

这样VFP9.0以下也可以用了。
wwwwb 2008-12-31
  • 打赏
  • 举报
回复
加入自增字段ID or 加入RECNO()
SELECT a.objectid,a.c_name,COUNT(a.objectid) into newtt FROM tdbf a ;
LEFT JOIN tdbf b ON a.objectid=b.objectid AND a.id <=b.id ;
GROUP BY a.objectid,a.c_name
十豆三 2008-12-31
  • 打赏
  • 举报
回复
上面第二句 Udate 需要VFP9.0
十豆三 2008-12-31
  • 打赏
  • 举报
回复
--生成测试数据,假设subid为数值型
Create Cursor 原表名 (objectid c(10),c_name c(10),subid I)
Insert Into 原表名 Values ('001','sdfsdf',0)
Insert Into 原表名 Values ('001','45sfd',0)
Insert Into 原表名 Values ('002','sdfsdf',0)
Insert Into 原表名 Values ('003','ssdfsdf',0)
Insert Into 原表名 Values ('002','sdfsfd54',0)
--生成测试数据结束

Update 原表名 Set subid=Recno()
Update 原表名 Set subid=(Select Count(*)+1 From 原表名 B Where b.objectid=原表名.objectid And B.subid<原表名.subid)
Browse &&看一下结果吧
wwwwb 2008-12-31
  • 打赏
  • 举报
回复
加入自增字段ID or 加入RECNO()
SELECT a.objectid,a.c_name,COUNT(a.objectid) FROM tdbf a ;
LEFT JOIN tdbf b ON a.objectid=b.objectid AND a.id <=b.id ;
GROUP BY a.objectid,a.c_name
wwwwb 2008-12-31
  • 打赏
  • 举报
回复
加入自增字段ID
SELECT a.objectid,a.c_name,COUNT(a.objectid) FROM tdbf a ;
LEFT JOIN tdbf b ON a.objectid=b.objectid AND a.id<=b.id ;
GROUP BY a.objectid,a.c_name
buytrip 2008-12-31
  • 打赏
  • 举报
回复
对,不好意思,打错了。
我现在就是按objectid分组生成recno(),但是这样的话,就要生成很多过渡表。
十豆三 2008-12-31
  • 打赏
  • 举报
回复
你的结果是不是应该是这样:

即是以下的结果:
objectid c_name subid
001 sdfsdf 1
001 45sfd 2
002 sdfsdf 1
003 ssdfsdf 1
002 sdfsfd54 2
rosion 2008-12-30
  • 打赏
  • 举报
回复
你这个表好像没什么规律哦

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧